<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.4"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Flow-IPC: ipc::session::shm::arena_lend::jemalloc::Server_session&lt; S_MQ_TYPE_OR_NONE, S_TRANSMIT_NATIVE_HANDLES, Mdt_payload &gt; Class Template Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr id="projectrow">
  <td id="projectalign">
   <div id="projectname">Flow-IPC<span id="projectnumber">&#160;2.0.0</span>
   </div>
   <div id="projectbrief">Flow-IPC project: Full implementation reference.</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.4 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search",'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div id="nav-path" class="navpath">
  <ul>
<li class="navelem"><a class="el" href="namespaceipc.html">ipc</a></li><li class="navelem"><a class="el" href="namespaceipc_1_1session.html">session</a></li><li class="navelem"><a class="el" href="namespaceipc_1_1session_1_1shm.html">shm</a></li><li class="navelem"><a class="el" href="namespaceipc_1_1session_1_1shm_1_1arena__lend.html">arena_lend</a></li><li class="navelem"><a class="el" href="namespaceipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc.html">jemalloc</a></li><li class="navelem"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session.html">Server_session</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="summary">
<a href="#pub-types">Public Types</a> &#124;
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pro-methods">Protected Member Functions</a> &#124;
<a href="#related">Related Functions</a> &#124;
<a href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session-members.html">List of all members</a>  </div>
  <div class="headertitle"><div class="title">ipc::session::shm::arena_lend::jemalloc::Server_session&lt; S_MQ_TYPE_OR_NONE, S_TRANSMIT_NATIVE_HANDLES, Mdt_payload &gt; Class Template Reference</div></div>
</div><!--header-->
<div class="contents">

<p>Identical to <a class="el" href="namespaceipc_1_1session.html#ab01d5bce0ab2f3435ca9dd88d27609dc" title="A vanilla Server_session with no optional capabilities.">session::Server_session</a> in every way, except that it makes available two SHM arenas, from the SHM-jemalloc provider (ipc::shm::arena_lend::jemalloc).  
 <a href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session.html#details">More...</a></p>

<p><code>#include &lt;<a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2server__session_8hpp_source.html">server_session.hpp</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for ipc::session::shm::arena_lend::jemalloc::Server_session&lt; S_MQ_TYPE_OR_NONE, S_TRANSMIT_NATIVE_HANDLES, Mdt_payload &gt;:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session__inherit__graph.svg" width="1015" height="107"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
<div class="dynheader">
Collaboration diagram for ipc::session::shm::arena_lend::jemalloc::Server_session&lt; S_MQ_TYPE_OR_NONE, S_TRANSMIT_NATIVE_HANDLES, Mdt_payload &gt;:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session__coll__graph.svg" width="1384" height="174"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-types" name="pub-types"></a>
Public Types</h2></td></tr>
<tr class="memitem:aee0d5c20c166905ba0d915e182cb7e13"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session.html#aee0d5c20c166905ba0d915e182cb7e13">Base</a> = <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html">Session_mv</a>&lt; <a class="el" href="classipc_1_1session_1_1Server__session__mv.html">session::Server_session_mv</a>&lt; <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session__impl.html">Server_session_impl</a>&lt; S_MQ_TYPE_OR_NONE, S_TRANSMIT_NATIVE_HANDLES, Mdt_payload &gt; &gt; &gt;</td></tr>
<tr class="memdesc:aee0d5c20c166905ba0d915e182cb7e13"><td class="mdescLeft">&#160;</td><td class="mdescRight">Short-hand for our base class. To the user: note its <code>public</code> API is inherited.  <a href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session.html#aee0d5c20c166905ba0d915e182cb7e13">More...</a><br /></td></tr>
<tr class="separator:aee0d5c20c166905ba0d915e182cb7e13"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a988281add5dc4a31202cfba47f458e5a"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session.html#a988281add5dc4a31202cfba47f458e5a">Arena</a> = typename <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#ae30ae4b65cd4178fa26eed660688829f">Base::Arena</a></td></tr>
<tr class="memdesc:a988281add5dc4a31202cfba47f458e5a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Short-hand for base class member alias <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#ae30ae4b65cd4178fa26eed660688829f" title="The arena object on which one may call construct&lt;T&gt;(ctor_args...), where ctor_args are arguments to t...">Session_mv::Arena</a>. Its doc header contains useful context and tips.  <a href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session.html#a988281add5dc4a31202cfba47f458e5a">More...</a><br /></td></tr>
<tr class="separator:a988281add5dc4a31202cfba47f458e5a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7de5ec3e9331c46664a493e060edb6f6"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session.html#a7de5ec3e9331c46664a493e060edb6f6">Structured_msg_builder_config</a> = typename <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#aaf1b1ad45b96d49c4c86e234a656f01b">Base::Structured_msg_builder_config</a></td></tr>
<tr class="memdesc:a7de5ec3e9331c46664a493e060edb6f6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Short-hand for base class member alias <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#aaf1b1ad45b96d49c4c86e234a656f01b" title="Implements Session API per contract.">Session_mv::Structured_msg_builder_config</a>.  <a href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session.html#a7de5ec3e9331c46664a493e060edb6f6">More...</a><br /></td></tr>
<tr class="separator:a7de5ec3e9331c46664a493e060edb6f6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_types_classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv"><td colspan="2" onclick="javascript:toggleInherit('pub_types_classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv')"><img src="closed.png" alt="-"/>&#160;Public Types inherited from <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html">ipc::session::shm::arena_lend::jemalloc::Session_mv&lt; session::Server_session_mv&lt; Server_session_impl&lt; S_MQ_TYPE_OR_NONE, S_TRANSMIT_NATIVE_HANDLES, Mdt_payload &gt; &gt; &gt;</a></td></tr>
<tr class="memitem:a6c0160faae9e8a9c880b6f78fafb428c inherit pub_types_classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a6c0160faae9e8a9c880b6f78fafb428c">Base</a> = <a class="el" href="classipc_1_1session_1_1Server__session__mv.html">session::Server_session_mv</a>&lt; <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session__impl.html">Server_session_impl</a>&lt; S_MQ_TYPE_OR_NONE, S_TRANSMIT_NATIVE_HANDLES, Mdt_payload &gt; &gt;</td></tr>
<tr class="memdesc:a6c0160faae9e8a9c880b6f78fafb428c inherit pub_types_classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv"><td class="mdescLeft">&#160;</td><td class="mdescRight">Short-hand for our base class. To the user: note its <code>public</code> API is inherited.  <a href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a6c0160faae9e8a9c880b6f78fafb428c">More...</a><br /></td></tr>
<tr class="separator:a6c0160faae9e8a9c880b6f78fafb428c inherit pub_types_classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae30ae4b65cd4178fa26eed660688829f inherit pub_types_classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#ae30ae4b65cd4178fa26eed660688829f">Arena</a> = typename Base::Base::Impl::Arena</td></tr>
<tr class="memdesc:ae30ae4b65cd4178fa26eed660688829f inherit pub_types_classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv"><td class="mdescLeft">&#160;</td><td class="mdescRight">The arena object on which one may call <code>construct&lt;T&gt;(ctor_args...)</code>, where <code>ctor_args</code> are arguments to the <code>T::T()</code> constructor.  <a href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#ae30ae4b65cd4178fa26eed660688829f">More...</a><br /></td></tr>
<tr class="separator:ae30ae4b65cd4178fa26eed660688829f inherit pub_types_classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad63c175a57f314c1ed3d4a78329030cd inherit pub_types_classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#ad63c175a57f314c1ed3d4a78329030cd">Shm_session</a> = jemalloc::Shm_session</td></tr>
<tr class="memdesc:ad63c175a57f314c1ed3d4a78329030cd inherit pub_types_classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv"><td class="mdescLeft">&#160;</td><td class="mdescRight">The lend/borrow engine type which allows one to "lend" a <code>T</code> (obtained via <code>Arena::construct&lt;T&gt;()</code>) to the opposing process, ahead of transmitting the object over a channel obtained from <code>*this</code> session.  <a href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#ad63c175a57f314c1ed3d4a78329030cd">More...</a><br /></td></tr>
<tr class="separator:ad63c175a57f314c1ed3d4a78329030cd inherit pub_types_classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abbb009e31853d3222a1614535ce401b7 inherit pub_types_classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#abbb009e31853d3222a1614535ce401b7">Allocator</a> = <a class="el" href="classipc_1_1shm_1_1stl_1_1Stateless__allocator.html">ipc::shm::stl::Stateless_allocator</a>&lt; T, <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#ae30ae4b65cd4178fa26eed660688829f">Arena</a> &gt;</td></tr>
<tr class="memdesc:abbb009e31853d3222a1614535ce401b7 inherit pub_types_classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convenience alias to be used in STL-compliant <code>T</code>s with <code>"Arena::construct&lt;T&gt;()"</code>, our own <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a1346f63d338304a20bef43d3c93c7562" title="Adds an owner process to the owner set of the given Arena::construct()-ed handle; and returns an opaq...">lend_object&lt;T&gt;()</a>, and <code>"Shm_session::lend_object&lt;T&gt;()"</code>.  <a href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#abbb009e31853d3222a1614535ce401b7">More...</a><br /></td></tr>
<tr class="separator:abbb009e31853d3222a1614535ce401b7 inherit pub_types_classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae32bce4c9889325f38d7d6f902efe4e8 inherit pub_types_classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#ae32bce4c9889325f38d7d6f902efe4e8">Borrower_allocator</a> = <a class="el" href="classipc_1_1shm_1_1stl_1_1Stateless__allocator.html">ipc::shm::stl::Stateless_allocator</a>&lt; T, <a class="el" href="namespaceipc_1_1shm.html#a6c8474d5b7dda220ed1f6693fc2e3c89">ipc::shm::Arena_to_borrower_allocator_arena_t</a>&lt; <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#ae30ae4b65cd4178fa26eed660688829f">Arena</a> &gt; &gt;</td></tr>
<tr class="memdesc:ae32bce4c9889325f38d7d6f902efe4e8 inherit pub_types_classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convenience alias to be used in STL-compliant <code>T</code>s with our own <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a7880b205b076ddd46537826d3b2028e9" title="Completes the cross-process operation begun by oppsing Session_mv::lend_object() that returned serial...">borrow_object&lt;T&gt;()</a> and <code>"Shm_session::borrow_object&lt;T&gt;()"</code>.  <a href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#ae32bce4c9889325f38d7d6f902efe4e8">More...</a><br /></td></tr>
<tr class="separator:ae32bce4c9889325f38d7d6f902efe4e8 inherit pub_types_classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a44555ea9786408cd39652d45758bcabc inherit pub_types_classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a44555ea9786408cd39652d45758bcabc">Structured_channel</a> = typename <a class="el" href="namespaceipc_1_1transport_1_1struc_1_1shm_1_1arena__lend_1_1jemalloc.html#ab68a69ad42d97d754f4e77c8cadd3a5e">transport::struc::shm::arena_lend::jemalloc::Channel</a>&lt; typename <a class="el" href="classipc_1_1session_1_1Session__mv.html#ab92df09d894e6e1aaf3c2733da594fd2">Base::Base::Impl::Session_base_obj::Channel_obj</a>, Message_body &gt;</td></tr>
<tr class="memdesc:a44555ea9786408cd39652d45758bcabc inherit pub_types_classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv"><td class="mdescLeft">&#160;</td><td class="mdescRight">Implements Session API per contract.  <a href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a44555ea9786408cd39652d45758bcabc">More...</a><br /></td></tr>
<tr class="separator:a44555ea9786408cd39652d45758bcabc inherit pub_types_classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaf1b1ad45b96d49c4c86e234a656f01b inherit pub_types_classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#aaf1b1ad45b96d49c4c86e234a656f01b">Structured_msg_builder_config</a> = typename <a class="el" href="classipc_1_1session_1_1Session__mv.html#a9f6e9a57f6e6ab420d554a2c0eba7877">Base::Base::Impl::Structured_msg_builder_config</a></td></tr>
<tr class="memdesc:aaf1b1ad45b96d49c4c86e234a656f01b inherit pub_types_classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv"><td class="mdescLeft">&#160;</td><td class="mdescRight">Implements Session API per contract.  <a href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#aaf1b1ad45b96d49c4c86e234a656f01b">More...</a><br /></td></tr>
<tr class="separator:aaf1b1ad45b96d49c4c86e234a656f01b inherit pub_types_classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a50304d6dba4a332952aee67dc37598d0 inherit pub_types_classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a50304d6dba4a332952aee67dc37598d0">Structured_msg_reader_config</a> = typename <a class="el" href="classipc_1_1session_1_1Session__mv.html#a335c3585402cc9430f8c909e8c7e55f4">Base::Base::Impl::Structured_msg_reader_config</a></td></tr>
<tr class="memdesc:a50304d6dba4a332952aee67dc37598d0 inherit pub_types_classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv"><td class="mdescLeft">&#160;</td><td class="mdescRight">Implements Session API per contract.  <a href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a50304d6dba4a332952aee67dc37598d0">More...</a><br /></td></tr>
<tr class="separator:a50304d6dba4a332952aee67dc37598d0 inherit pub_types_classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:add76f1d323854ec7be266a255a4f0073 inherit pub_types_classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#add76f1d323854ec7be266a255a4f0073">Blob</a> = typename Base::Base::Impl::Blob</td></tr>
<tr class="memdesc:add76f1d323854ec7be266a255a4f0073 inherit pub_types_classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv"><td class="mdescLeft">&#160;</td><td class="mdescRight">Alias for a light-weight blob used in <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a7880b205b076ddd46537826d3b2028e9" title="Completes the cross-process operation begun by oppsing Session_mv::lend_object() that returned serial...">borrow_object()</a> and <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a1346f63d338304a20bef43d3c93c7562" title="Adds an owner process to the owner set of the given Arena::construct()-ed handle; and returns an opaq...">lend_object()</a>.  <a href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#add76f1d323854ec7be266a255a4f0073">More...</a><br /></td></tr>
<tr class="separator:add76f1d323854ec7be266a255a4f0073 inherit pub_types_classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_types_classipc_1_1session_1_1Server__session__mv"><td colspan="2" onclick="javascript:toggleInherit('pub_types_classipc_1_1session_1_1Server__session__mv')"><img src="closed.png" alt="-"/>&#160;Public Types inherited from <a class="el" href="classipc_1_1session_1_1Server__session__mv.html">ipc::session::Server_session_mv&lt; Server_session_impl&lt; S_MQ_TYPE_OR_NONE, S_TRANSMIT_NATIVE_HANDLES, Mdt_payload &gt; &gt;</a></td></tr>
<tr class="memitem:a17a6288bac54ea18317582121ed8e10d inherit pub_types_classipc_1_1session_1_1Server__session__mv"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1Server__session__mv.html#a17a6288bac54ea18317582121ed8e10d">Base</a> = <a class="el" href="classipc_1_1session_1_1Session__mv.html">Session_mv</a>&lt; <a class="el" href="classipc_1_1session_1_1Server__session__impl.html">Server_session_impl</a>&lt; S_MQ_TYPE_OR_NONE, S_TRANSMIT_NATIVE_HANDLES, Mdt_payload &gt; &gt;</td></tr>
<tr class="memdesc:a17a6288bac54ea18317582121ed8e10d inherit pub_types_classipc_1_1session_1_1Server__session__mv"><td class="mdescLeft">&#160;</td><td class="mdescRight">Short-hand for our base class. To the user: note its <code>public</code> API is inherited.  <a href="classipc_1_1session_1_1Server__session__mv.html#a17a6288bac54ea18317582121ed8e10d">More...</a><br /></td></tr>
<tr class="separator:a17a6288bac54ea18317582121ed8e10d inherit pub_types_classipc_1_1session_1_1Server__session__mv"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_types_classipc_1_1session_1_1Session__mv"><td colspan="2" onclick="javascript:toggleInherit('pub_types_classipc_1_1session_1_1Session__mv')"><img src="closed.png" alt="-"/>&#160;Public Types inherited from <a class="el" href="classipc_1_1session_1_1Session__mv.html">ipc::session::Session_mv&lt; Server_session_impl&lt; S_MQ_TYPE_OR_NONE, S_TRANSMIT_NATIVE_HANDLES, Mdt_payload &gt; &gt;</a></td></tr>
<tr class="memitem:ab92df09d894e6e1aaf3c2733da594fd2 inherit pub_types_classipc_1_1session_1_1Session__mv"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1Session__mv.html#ab92df09d894e6e1aaf3c2733da594fd2">Channel_obj</a> = typename <a class="el" href="classipc_1_1session_1_1Server__session__impl.html#a7c969c3a1007f8e4ba3ad1c1acd6c290">Impl::Channel_obj</a></td></tr>
<tr class="memdesc:ab92df09d894e6e1aaf3c2733da594fd2 inherit pub_types_classipc_1_1session_1_1Session__mv"><td class="mdescLeft">&#160;</td><td class="mdescRight">Implements Session API per contract.  <a href="classipc_1_1session_1_1Session__mv.html#ab92df09d894e6e1aaf3c2733da594fd2">More...</a><br /></td></tr>
<tr class="separator:ab92df09d894e6e1aaf3c2733da594fd2 inherit pub_types_classipc_1_1session_1_1Session__mv"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af87da439644b2afd73d6a13d97e7985f inherit pub_types_classipc_1_1session_1_1Session__mv"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1Session__mv.html#af87da439644b2afd73d6a13d97e7985f">Channels</a> = typename <a class="el" href="classipc_1_1session_1_1Server__session__impl.html#a75df7061f9c57660f9fb944d83da416b">Impl::Channels</a></td></tr>
<tr class="memdesc:af87da439644b2afd73d6a13d97e7985f inherit pub_types_classipc_1_1session_1_1Session__mv"><td class="mdescLeft">&#160;</td><td class="mdescRight">Container (<code>vector&lt;&gt;</code>) of <a class="el" href="classipc_1_1session_1_1Session__mv.html#ab92df09d894e6e1aaf3c2733da594fd2" title="Implements Session API per contract.">Channel_obj</a>.  <a href="classipc_1_1session_1_1Session__mv.html#af87da439644b2afd73d6a13d97e7985f">More...</a><br /></td></tr>
<tr class="separator:af87da439644b2afd73d6a13d97e7985f inherit pub_types_classipc_1_1session_1_1Session__mv"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acccbc643f29f002075e66cd134da70bd inherit pub_types_classipc_1_1session_1_1Session__mv"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1Session__mv.html#acccbc643f29f002075e66cd134da70bd">Mdt_payload_obj</a> = typename <a class="el" href="classipc_1_1session_1_1Server__session__impl.html#aa9cd0c1e6792a4ee096b55b13b4db803">Impl::Mdt_payload_obj</a></td></tr>
<tr class="memdesc:acccbc643f29f002075e66cd134da70bd inherit pub_types_classipc_1_1session_1_1Session__mv"><td class="mdescLeft">&#160;</td><td class="mdescRight">Implements Session API per contract.  <a href="classipc_1_1session_1_1Session__mv.html#acccbc643f29f002075e66cd134da70bd">More...</a><br /></td></tr>
<tr class="separator:acccbc643f29f002075e66cd134da70bd inherit pub_types_classipc_1_1session_1_1Session__mv"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af10f452e602e4ea7389c6a77dd9a0f88 inherit pub_types_classipc_1_1session_1_1Session__mv"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1Session__mv.html#af10f452e602e4ea7389c6a77dd9a0f88">Mdt_builder</a> = typename <a class="el" href="classipc_1_1session_1_1Server__session__impl.html#a7134fc9c4d26ba1fbc8e5da266d970e5">Impl::Mdt_builder</a></td></tr>
<tr class="memdesc:af10f452e602e4ea7389c6a77dd9a0f88 inherit pub_types_classipc_1_1session_1_1Session__mv"><td class="mdescLeft">&#160;</td><td class="mdescRight">Implements Session API per contract.  <a href="classipc_1_1session_1_1Session__mv.html#af10f452e602e4ea7389c6a77dd9a0f88">More...</a><br /></td></tr>
<tr class="separator:af10f452e602e4ea7389c6a77dd9a0f88 inherit pub_types_classipc_1_1session_1_1Session__mv"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a787253f02859ea6b99ce3eba92766431 inherit pub_types_classipc_1_1session_1_1Session__mv"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1Session__mv.html#a787253f02859ea6b99ce3eba92766431">Mdt_builder_ptr</a> = typename <a class="el" href="classipc_1_1session_1_1Server__session__impl.html#ac4bc7e38574e0495af4887d2e6226b7a">Impl::Mdt_builder_ptr</a></td></tr>
<tr class="memdesc:a787253f02859ea6b99ce3eba92766431 inherit pub_types_classipc_1_1session_1_1Session__mv"><td class="mdescLeft">&#160;</td><td class="mdescRight">Implements Session API per contract.  <a href="classipc_1_1session_1_1Session__mv.html#a787253f02859ea6b99ce3eba92766431">More...</a><br /></td></tr>
<tr class="separator:a787253f02859ea6b99ce3eba92766431 inherit pub_types_classipc_1_1session_1_1Session__mv"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2b1215fb0c9738b9fcfbb337d23c43df inherit pub_types_classipc_1_1session_1_1Session__mv"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1Session__mv.html#a2b1215fb0c9738b9fcfbb337d23c43df">Mdt_reader_ptr</a> = typename <a class="el" href="classipc_1_1session_1_1Server__session__impl.html#a78e61f8681c7ec92fa19bae560763ab1">Impl::Mdt_reader_ptr</a></td></tr>
<tr class="memdesc:a2b1215fb0c9738b9fcfbb337d23c43df inherit pub_types_classipc_1_1session_1_1Session__mv"><td class="mdescLeft">&#160;</td><td class="mdescRight">Implements Session API per contract.  <a href="classipc_1_1session_1_1Session__mv.html#a2b1215fb0c9738b9fcfbb337d23c43df">More...</a><br /></td></tr>
<tr class="separator:a2b1215fb0c9738b9fcfbb337d23c43df inherit pub_types_classipc_1_1session_1_1Session__mv"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac205819d4a3a066f31b5af311ff40a2a inherit pub_types_classipc_1_1session_1_1Session__mv"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1Session__mv.html#ac205819d4a3a066f31b5af311ff40a2a">Structured_channel</a> = typename <a class="el" href="namespaceipc_1_1transport_1_1struc.html#aca041b0efd4a9ae18e10088b2ee3c052">transport::struc::Channel_via_heap</a>&lt; <a class="el" href="classipc_1_1session_1_1Session__mv.html#ab92df09d894e6e1aaf3c2733da594fd2">Channel_obj</a>, Message_body &gt;</td></tr>
<tr class="memdesc:ac205819d4a3a066f31b5af311ff40a2a inherit pub_types_classipc_1_1session_1_1Session__mv"><td class="mdescLeft">&#160;</td><td class="mdescRight">Implements Session API per contract.  <a href="classipc_1_1session_1_1Session__mv.html#ac205819d4a3a066f31b5af311ff40a2a">More...</a><br /></td></tr>
<tr class="separator:ac205819d4a3a066f31b5af311ff40a2a inherit pub_types_classipc_1_1session_1_1Session__mv"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9f6e9a57f6e6ab420d554a2c0eba7877 inherit pub_types_classipc_1_1session_1_1Session__mv"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1Session__mv.html#a9f6e9a57f6e6ab420d554a2c0eba7877">Structured_msg_builder_config</a> = typename <a class="el" href="classipc_1_1session_1_1Server__session__impl.html#abff6feea533de655f0cd8017d6ea3293">Impl::Structured_msg_builder_config</a></td></tr>
<tr class="memdesc:a9f6e9a57f6e6ab420d554a2c0eba7877 inherit pub_types_classipc_1_1session_1_1Session__mv"><td class="mdescLeft">&#160;</td><td class="mdescRight">Implements Session API per contract.  <a href="classipc_1_1session_1_1Session__mv.html#a9f6e9a57f6e6ab420d554a2c0eba7877">More...</a><br /></td></tr>
<tr class="separator:a9f6e9a57f6e6ab420d554a2c0eba7877 inherit pub_types_classipc_1_1session_1_1Session__mv"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a335c3585402cc9430f8c909e8c7e55f4 inherit pub_types_classipc_1_1session_1_1Session__mv"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1Session__mv.html#a335c3585402cc9430f8c909e8c7e55f4">Structured_msg_reader_config</a> = typename <a class="el" href="classipc_1_1session_1_1Server__session__impl.html#abff6feea533de655f0cd8017d6ea3293">Impl::Structured_msg_builder_config</a></td></tr>
<tr class="memdesc:a335c3585402cc9430f8c909e8c7e55f4 inherit pub_types_classipc_1_1session_1_1Session__mv"><td class="mdescLeft">&#160;</td><td class="mdescRight">Implements Session API per contract.  <a href="classipc_1_1session_1_1Session__mv.html#a335c3585402cc9430f8c909e8c7e55f4">More...</a><br /></td></tr>
<tr class="separator:a335c3585402cc9430f8c909e8c7e55f4 inherit pub_types_classipc_1_1session_1_1Session__mv"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a20d4838f6ff705bd2ad33de066ae2d4d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session.html#a988281add5dc4a31202cfba47f458e5a">Arena</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session.html#a20d4838f6ff705bd2ad33de066ae2d4d">app_shm</a> ()</td></tr>
<tr class="memdesc:a20d4838f6ff705bd2ad33de066ae2d4d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns SHM <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session.html#a988281add5dc4a31202cfba47f458e5a" title="Short-hand for base class member alias Session_mv::Arena. Its doc header contains useful context and ...">Arena</a> with per-app scope, meaning its pool shall be accessible potentially beyond the lifetime of this session but rather until the generating <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html" title="This is to vanilla Session_server what shm::arena_lend::jemalloc::Server_session is to vanilla Server...">Session_server</a> (i.e., server process) shuts down, by any <a class="el" href="classipc_1_1session_1_1Session.html" title="A documentation-only concept defining the local side of an IPC conversation (session) with another en...">Session</a> under that umbrella, now or in the future, as long as its <a class="el" href="structipc_1_1session_1_1Client__app.html" title="An App that is used as a client in at least one client-server IPC split.">Client_app</a> equals that of <code>*this</code> session.  <a href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session.html#a20d4838f6ff705bd2ad33de066ae2d4d">More...</a><br /></td></tr>
<tr class="separator:a20d4838f6ff705bd2ad33de066ae2d4d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a841ce582dbb9084c7dc934f0d2fbb757"><td class="memItemLeft" align="right" valign="top">std::shared_ptr&lt; <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session.html#a988281add5dc4a31202cfba47f458e5a">Arena</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session.html#a841ce582dbb9084c7dc934f0d2fbb757">app_shm_ptr</a> ()</td></tr>
<tr class="memdesc:a841ce582dbb9084c7dc934f0d2fbb757"><td class="mdescLeft">&#160;</td><td class="mdescRight">Identical to <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session.html#a20d4838f6ff705bd2ad33de066ae2d4d" title="Returns SHM Arena with per-app scope, meaning its pool shall be accessible potentially beyond the lif...">app_shm()</a> but returns that via a <code>shared_ptr</code>-handle as required for work directly within ipc::shm::arena_lend::jemalloc APIs.  <a href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session.html#a841ce582dbb9084c7dc934f0d2fbb757">More...</a><br /></td></tr>
<tr class="separator:a841ce582dbb9084c7dc934f0d2fbb757"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a26c1d34c7be1002cc9fc8ae9eeae8164"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session.html#a7de5ec3e9331c46664a493e060edb6f6">Structured_msg_builder_config</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session.html#a26c1d34c7be1002cc9fc8ae9eeae8164">app_shm_builder_config</a> ()</td></tr>
<tr class="memdesc:a26c1d34c7be1002cc9fc8ae9eeae8164"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns builder config suitable for capnp-serializing out-messages in SHM arena <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session.html#a20d4838f6ff705bd2ad33de066ae2d4d" title="Returns SHM Arena with per-app scope, meaning its pool shall be accessible potentially beyond the lif...">app_shm()</a>.  <a href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session.html#a26c1d34c7be1002cc9fc8ae9eeae8164">More...</a><br /></td></tr>
<tr class="separator:a26c1d34c7be1002cc9fc8ae9eeae8164"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af9ce191cc25d67c6c098ea56849ef2d5"><td class="memItemLeft" align="right" valign="top">Structured_msg_builder_config::Builder::Session&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session.html#af9ce191cc25d67c6c098ea56849ef2d5">app_shm_lender_session</a> ()</td></tr>
<tr class="memdesc:af9ce191cc25d67c6c098ea56849ef2d5"><td class="mdescLeft">&#160;</td><td class="mdescRight">When transmitting items originating in <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session.html#a988281add5dc4a31202cfba47f458e5a" title="Short-hand for base class member alias Session_mv::Arena. Its doc header contains useful context and ...">Arena</a> <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session.html#a20d4838f6ff705bd2ad33de066ae2d4d" title="Returns SHM Arena with per-app scope, meaning its pool shall be accessible potentially beyond the lif...">app_shm()</a> via <a class="el" href="classipc_1_1transport_1_1struc_1_1shm_1_1Builder.html#a7909a2d1e1d24037fb8af5338fffa783" title="Implements concept API.">transport::struc::shm::Builder::emit_serialization()</a> (and/or <a class="el" href="classipc_1_1transport_1_1struc_1_1Channel.html" title="Owning and wrapping a pre-connected transport::Channel peer (an endpoint of an established channel ov...">transport::struc::Channel</a> send facilities), returns additional-to-payload information necessary to target the opposing process properly.  <a href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session.html#af9ce191cc25d67c6c098ea56849ef2d5">More...</a><br /></td></tr>
<tr class="separator:af9ce191cc25d67c6c098ea56849ef2d5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html">ipc::session::shm::arena_lend::jemalloc::Session_mv&lt; session::Server_session_mv&lt; Server_session_impl&lt; S_MQ_TYPE_OR_NONE, S_TRANSMIT_NATIVE_HANDLES, Mdt_payload &gt; &gt; &gt;</a></td></tr>
<tr class="memitem:a361c867d10a255ff62cdb19b75fc0a18 inherit pub_methods_classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#ae30ae4b65cd4178fa26eed660688829f">Arena</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a361c867d10a255ff62cdb19b75fc0a18">session_shm</a> ()</td></tr>
<tr class="memdesc:a361c867d10a255ff62cdb19b75fc0a18 inherit pub_methods_classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns SHM <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#ae30ae4b65cd4178fa26eed660688829f" title="The arena object on which one may call construct&lt;T&gt;(ctor_args...), where ctor_args are arguments to t...">Arena</a> with per-session scope, meaning it shall be accessible only during the lifetime of this session, by this Session (via this accessor).  <a href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a361c867d10a255ff62cdb19b75fc0a18">More...</a><br /></td></tr>
<tr class="separator:a361c867d10a255ff62cdb19b75fc0a18 inherit pub_methods_classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8465d440f480f57ceda2734def8c39fa inherit pub_methods_classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv"><td class="memItemLeft" align="right" valign="top">std::shared_ptr&lt; <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#ae30ae4b65cd4178fa26eed660688829f">Arena</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a8465d440f480f57ceda2734def8c39fa">session_shm_ptr</a> ()</td></tr>
<tr class="memdesc:a8465d440f480f57ceda2734def8c39fa inherit pub_methods_classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv"><td class="mdescLeft">&#160;</td><td class="mdescRight">Identical to <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a361c867d10a255ff62cdb19b75fc0a18" title="Returns SHM Arena with per-session scope, meaning it shall be accessible only during the lifetime of ...">session_shm()</a> but returns that via a <code>shared_ptr</code>-handle as required for work directly within ipc::shm::arena_lend::jemalloc APIs.  <a href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a8465d440f480f57ceda2734def8c39fa">More...</a><br /></td></tr>
<tr class="separator:a8465d440f480f57ceda2734def8c39fa inherit pub_methods_classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1346f63d338304a20bef43d3c93c7562 inherit pub_methods_classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#add76f1d323854ec7be266a255a4f0073">Blob</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a1346f63d338304a20bef43d3c93c7562">lend_object</a> (const typename Arena::template Handle&lt; T &gt; &amp;handle)</td></tr>
<tr class="memdesc:a1346f63d338304a20bef43d3c93c7562 inherit pub_methods_classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv"><td class="mdescLeft">&#160;</td><td class="mdescRight">Adds an owner process to the owner set of the given <code>Arena::construct()</code>-ed handle; and returns an opaque blob, such that if one passes it to opposing Session_mv::borrow_object() in the receiving process, that <code><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a7880b205b076ddd46537826d3b2028e9" title="Completes the cross-process operation begun by oppsing Session_mv::lend_object() that returned serial...">borrow_object()</a></code> shall return an equivalent <code>Handle</code> in that process.  <a href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a1346f63d338304a20bef43d3c93c7562">More...</a><br /></td></tr>
<tr class="separator:a1346f63d338304a20bef43d3c93c7562 inherit pub_methods_classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7880b205b076ddd46537826d3b2028e9 inherit pub_methods_classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv"><td class="memItemLeft" align="right" valign="top">Arena::template Handle&lt; T &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a7880b205b076ddd46537826d3b2028e9">borrow_object</a> (const <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#add76f1d323854ec7be266a255a4f0073">Blob</a> &amp;serialization)</td></tr>
<tr class="memdesc:a7880b205b076ddd46537826d3b2028e9 inherit pub_methods_classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv"><td class="mdescLeft">&#160;</td><td class="mdescRight">Completes the cross-process operation begun by oppsing Session_mv::lend_object() that returned <code>serialization</code>; to be invoked in the intended new owner process which is operating <code>*this</code>.  <a href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a7880b205b076ddd46537826d3b2028e9">More...</a><br /></td></tr>
<tr class="separator:a7880b205b076ddd46537826d3b2028e9 inherit pub_methods_classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad00593f745b49c41fa446bdf4250f2e9 inherit pub_methods_classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classipc_1_1session_1_1Session__mv.html#a9f6e9a57f6e6ab420d554a2c0eba7877">Structured_msg_builder_config</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#ad00593f745b49c41fa446bdf4250f2e9">session_shm_builder_config</a> ()</td></tr>
<tr class="memdesc:ad00593f745b49c41fa446bdf4250f2e9 inherit pub_methods_classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns builder config suitable for capnp-serializing out-messages in SHM arena <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a361c867d10a255ff62cdb19b75fc0a18" title="Returns SHM Arena with per-session scope, meaning it shall be accessible only during the lifetime of ...">session_shm()</a>.  <a href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#ad00593f745b49c41fa446bdf4250f2e9">More...</a><br /></td></tr>
<tr class="separator:ad00593f745b49c41fa446bdf4250f2e9 inherit pub_methods_classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac4d3c3831486cb32b3a81b5783891d7d inherit pub_methods_classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv"><td class="memItemLeft" align="right" valign="top">Structured_msg_builder_config::Builder::Session&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#ac4d3c3831486cb32b3a81b5783891d7d">session_shm_lender_session</a> ()</td></tr>
<tr class="memdesc:ac4d3c3831486cb32b3a81b5783891d7d inherit pub_methods_classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv"><td class="mdescLeft">&#160;</td><td class="mdescRight">When transmitting items originating in <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#ae30ae4b65cd4178fa26eed660688829f" title="The arena object on which one may call construct&lt;T&gt;(ctor_args...), where ctor_args are arguments to t...">Arena</a> <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a361c867d10a255ff62cdb19b75fc0a18" title="Returns SHM Arena with per-session scope, meaning it shall be accessible only during the lifetime of ...">session_shm()</a> via transport::struc::shm::Builder::emit_serialization()(and/or transport::struc::Channel send facilities), returns additional-to-payload information necessary to target the opposing process properly.  <a href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#ac4d3c3831486cb32b3a81b5783891d7d">More...</a><br /></td></tr>
<tr class="separator:ac4d3c3831486cb32b3a81b5783891d7d inherit pub_methods_classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6385f523cd5de727b305e9b165b94ad5 inherit pub_methods_classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classipc_1_1session_1_1Session__mv.html#a335c3585402cc9430f8c909e8c7e55f4">Structured_msg_reader_config</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a6385f523cd5de727b305e9b165b94ad5">session_shm_reader_config</a> ()</td></tr>
<tr class="memdesc:a6385f523cd5de727b305e9b165b94ad5 inherit pub_methods_classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a74813622394c2876c4e3a93c2071f412" title="Returns reader config that can be used to deserialize any transport::struc::Msg_in to have arrived fr...">shm_reader_config()</a>.  <a href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a6385f523cd5de727b305e9b165b94ad5">More...</a><br /></td></tr>
<tr class="separator:a6385f523cd5de727b305e9b165b94ad5 inherit pub_methods_classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a29402234e4b12daa9796687a310a176d inherit pub_methods_classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classipc_1_1session_1_1Session__mv.html#a335c3585402cc9430f8c909e8c7e55f4">Structured_msg_reader_config</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a29402234e4b12daa9796687a310a176d">app_shm_reader_config</a> ()</td></tr>
<tr class="memdesc:a29402234e4b12daa9796687a310a176d inherit pub_methods_classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a74813622394c2876c4e3a93c2071f412" title="Returns reader config that can be used to deserialize any transport::struc::Msg_in to have arrived fr...">shm_reader_config()</a>.  <a href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a29402234e4b12daa9796687a310a176d">More...</a><br /></td></tr>
<tr class="separator:a29402234e4b12daa9796687a310a176d inherit pub_methods_classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abde9667974bac936135e6a826e856f9a inherit pub_methods_classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#ad63c175a57f314c1ed3d4a78329030cd">Shm_session</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#abde9667974bac936135e6a826e856f9a">shm_session</a> ()</td></tr>
<tr class="memdesc:abde9667974bac936135e6a826e856f9a inherit pub_methods_classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns lend/borrow engine <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#ad63c175a57f314c1ed3d4a78329030cd" title="The lend/borrow engine type which allows one to &quot;lend&quot; a T (obtained via Arena::construct&lt;T&gt;()) to th...">Shm_session</a> for <code>*this</code> session.  <a href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#abde9667974bac936135e6a826e856f9a">More...</a><br /></td></tr>
<tr class="separator:abde9667974bac936135e6a826e856f9a inherit pub_methods_classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a74813622394c2876c4e3a93c2071f412 inherit pub_methods_classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classipc_1_1session_1_1Session__mv.html#a335c3585402cc9430f8c909e8c7e55f4">Structured_msg_reader_config</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a74813622394c2876c4e3a93c2071f412">shm_reader_config</a> ()</td></tr>
<tr class="memdesc:a74813622394c2876c4e3a93c2071f412 inherit pub_methods_classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns reader config that can be used to deserialize any transport::struc::Msg_in to have arrived from the opposing process in <code>*this</code> session.  <a href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a74813622394c2876c4e3a93c2071f412">More...</a><br /></td></tr>
<tr class="separator:a74813622394c2876c4e3a93c2071f412 inherit pub_methods_classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_classipc_1_1session_1_1Server__session__mv"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classipc_1_1session_1_1Server__session__mv')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="classipc_1_1session_1_1Server__session__mv.html">ipc::session::Server_session_mv&lt; Server_session_impl&lt; S_MQ_TYPE_OR_NONE, S_TRANSMIT_NATIVE_HANDLES, Mdt_payload &gt; &gt;</a></td></tr>
<tr class="memitem:ac873543383b7a6da94d4353231f34ec2 inherit pub_methods_classipc_1_1session_1_1Server__session__mv"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="structipc_1_1session_1_1Client__app.html">Client_app</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1Server__session__mv.html#ac873543383b7a6da94d4353231f34ec2">client_app</a> () const</td></tr>
<tr class="memdesc:ac873543383b7a6da94d4353231f34ec2 inherit pub_methods_classipc_1_1session_1_1Server__session__mv"><td class="mdescLeft">&#160;</td><td class="mdescRight">The opposing application is described by a Client_app; this is that description.  <a href="classipc_1_1session_1_1Server__session__mv.html#ac873543383b7a6da94d4353231f34ec2">More...</a><br /></td></tr>
<tr class="separator:ac873543383b7a6da94d4353231f34ec2 inherit pub_methods_classipc_1_1session_1_1Server__session__mv"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a99097e5aa6883877c74f8a93ebc9f3e1 inherit pub_methods_classipc_1_1session_1_1Server__session__mv"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1Server__session__mv.html#a99097e5aa6883877c74f8a93ebc9f3e1">init_handlers</a> (Task_err &amp;&amp;on_err_func_arg, On_passive_open_channel_handler &amp;&amp;on_passive_open_channel_func_arg)</td></tr>
<tr class="memdesc:a99097e5aa6883877c74f8a93ebc9f3e1 inherit pub_methods_classipc_1_1session_1_1Server__session__mv"><td class="mdescLeft">&#160;</td><td class="mdescRight">To be invoked by public user upon first obtaining <code>*this</code>: memorizes the given on-error and on-passive-open handlers thus moving this Server_session_mv to PEER state wherein it is a formal Session concept impl.  <a href="classipc_1_1session_1_1Server__session__mv.html#a99097e5aa6883877c74f8a93ebc9f3e1">More...</a><br /></td></tr>
<tr class="separator:a99097e5aa6883877c74f8a93ebc9f3e1 inherit pub_methods_classipc_1_1session_1_1Server__session__mv"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac1ea393b9d0d7de60f7433cbc7dad0d4 inherit pub_methods_classipc_1_1session_1_1Server__session__mv"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1Server__session__mv.html#ac1ea393b9d0d7de60f7433cbc7dad0d4">init_handlers</a> (Task_err &amp;&amp;on_err_func_arg)</td></tr>
<tr class="memdesc:ac1ea393b9d0d7de60f7433cbc7dad0d4 inherit pub_methods_classipc_1_1session_1_1Server__session__mv"><td class="mdescLeft">&#160;</td><td class="mdescRight">Alternative to the other <a class="el" href="classipc_1_1session_1_1Server__session__mv.html#a99097e5aa6883877c74f8a93ebc9f3e1" title="To be invoked by public user upon first obtaining *this: memorizes the given on-error and on-passive-...">init_handlers()</a>.  <a href="classipc_1_1session_1_1Server__session__mv.html#ac1ea393b9d0d7de60f7433cbc7dad0d4">More...</a><br /></td></tr>
<tr class="separator:ac1ea393b9d0d7de60f7433cbc7dad0d4 inherit pub_methods_classipc_1_1session_1_1Server__session__mv"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_classipc_1_1session_1_1Session__mv"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classipc_1_1session_1_1Session__mv')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="classipc_1_1session_1_1Session__mv.html">ipc::session::Session_mv&lt; Server_session_impl&lt; S_MQ_TYPE_OR_NONE, S_TRANSMIT_NATIVE_HANDLES, Mdt_payload &gt; &gt;</a></td></tr>
<tr class="memitem:af964cb260766684d46503b43d0faa777 inherit pub_methods_classipc_1_1session_1_1Session__mv"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1Session__mv.html#af964cb260766684d46503b43d0faa777">Session_mv</a> ()</td></tr>
<tr class="memdesc:af964cb260766684d46503b43d0faa777 inherit pub_methods_classipc_1_1session_1_1Session__mv"><td class="mdescLeft">&#160;</td><td class="mdescRight">Implements Session API per contract.  <a href="classipc_1_1session_1_1Session__mv.html#af964cb260766684d46503b43d0faa777">More...</a><br /></td></tr>
<tr class="separator:af964cb260766684d46503b43d0faa777 inherit pub_methods_classipc_1_1session_1_1Session__mv"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad1cffabdbc41809399b4bda9330f5367 inherit pub_methods_classipc_1_1session_1_1Session__mv"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1Session__mv.html#ad1cffabdbc41809399b4bda9330f5367">Session_mv</a> (<a class="el" href="classipc_1_1session_1_1Session__mv.html">Session_mv</a> &amp;&amp;src)</td></tr>
<tr class="memdesc:ad1cffabdbc41809399b4bda9330f5367 inherit pub_methods_classipc_1_1session_1_1Session__mv"><td class="mdescLeft">&#160;</td><td class="mdescRight">Implements Session API per contract.  <a href="classipc_1_1session_1_1Session__mv.html#ad1cffabdbc41809399b4bda9330f5367">More...</a><br /></td></tr>
<tr class="separator:ad1cffabdbc41809399b4bda9330f5367 inherit pub_methods_classipc_1_1session_1_1Session__mv"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1293a6369b78d12bad869ca812be0f74 inherit pub_methods_classipc_1_1session_1_1Session__mv"><td class="memItemLeft" align="right" valign="top"><a id="a1293a6369b78d12bad869ca812be0f74" name="a1293a6369b78d12bad869ca812be0f74"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>Session_mv</b> (const <a class="el" href="classipc_1_1session_1_1Session__mv.html">Session_mv</a> &amp;)=delete</td></tr>
<tr class="memdesc:a1293a6369b78d12bad869ca812be0f74 inherit pub_methods_classipc_1_1session_1_1Session__mv"><td class="mdescLeft">&#160;</td><td class="mdescRight">Copy ction is disallowed. <br /></td></tr>
<tr class="separator:a1293a6369b78d12bad869ca812be0f74 inherit pub_methods_classipc_1_1session_1_1Session__mv"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0b4f0cdde3221b0922e0b44cbb6011a2 inherit pub_methods_classipc_1_1session_1_1Session__mv"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1Session__mv.html#a0b4f0cdde3221b0922e0b44cbb6011a2">~Session_mv</a> ()</td></tr>
<tr class="memdesc:a0b4f0cdde3221b0922e0b44cbb6011a2 inherit pub_methods_classipc_1_1session_1_1Session__mv"><td class="mdescLeft">&#160;</td><td class="mdescRight">Implements Session API per contract.  <a href="classipc_1_1session_1_1Session__mv.html#a0b4f0cdde3221b0922e0b44cbb6011a2">More...</a><br /></td></tr>
<tr class="separator:a0b4f0cdde3221b0922e0b44cbb6011a2 inherit pub_methods_classipc_1_1session_1_1Session__mv"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac000e14183b5dcb523ff0eaaf030968c inherit pub_methods_classipc_1_1session_1_1Session__mv"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classipc_1_1session_1_1Session__mv.html">Session_mv</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1Session__mv.html#ac000e14183b5dcb523ff0eaaf030968c">operator=</a> (<a class="el" href="classipc_1_1session_1_1Session__mv.html">Session_mv</a> &amp;&amp;src)</td></tr>
<tr class="memdesc:ac000e14183b5dcb523ff0eaaf030968c inherit pub_methods_classipc_1_1session_1_1Session__mv"><td class="mdescLeft">&#160;</td><td class="mdescRight">Implements Session API per contract.  <a href="classipc_1_1session_1_1Session__mv.html#ac000e14183b5dcb523ff0eaaf030968c">More...</a><br /></td></tr>
<tr class="separator:ac000e14183b5dcb523ff0eaaf030968c inherit pub_methods_classipc_1_1session_1_1Session__mv"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aeb7d7965c0fc0736b6c59f5f81a3e8c2 inherit pub_methods_classipc_1_1session_1_1Session__mv"><td class="memItemLeft" align="right" valign="top"><a id="aeb7d7965c0fc0736b6c59f5f81a3e8c2" name="aeb7d7965c0fc0736b6c59f5f81a3e8c2"></a>
<a class="el" href="classipc_1_1session_1_1Session__mv.html">Session_mv</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>operator=</b> (const <a class="el" href="classipc_1_1session_1_1Session__mv.html">Session_mv</a> &amp;)=delete</td></tr>
<tr class="memdesc:aeb7d7965c0fc0736b6c59f5f81a3e8c2 inherit pub_methods_classipc_1_1session_1_1Session__mv"><td class="mdescLeft">&#160;</td><td class="mdescRight">Copy assignment is disallowed. <br /></td></tr>
<tr class="separator:aeb7d7965c0fc0736b6c59f5f81a3e8c2 inherit pub_methods_classipc_1_1session_1_1Session__mv"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aba79f245e6f726ac6aa573e45e0bfdf3 inherit pub_methods_classipc_1_1session_1_1Session__mv"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classipc_1_1session_1_1Session__mv.html#a787253f02859ea6b99ce3eba92766431">Mdt_builder_ptr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1Session__mv.html#aba79f245e6f726ac6aa573e45e0bfdf3">mdt_builder</a> ()</td></tr>
<tr class="memdesc:aba79f245e6f726ac6aa573e45e0bfdf3 inherit pub_methods_classipc_1_1session_1_1Session__mv"><td class="mdescLeft">&#160;</td><td class="mdescRight">Implements Session API per contract.  <a href="classipc_1_1session_1_1Session__mv.html#aba79f245e6f726ac6aa573e45e0bfdf3">More...</a><br /></td></tr>
<tr class="separator:aba79f245e6f726ac6aa573e45e0bfdf3 inherit pub_methods_classipc_1_1session_1_1Session__mv"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6d8cdbb86140056a7e7d2931ea642b18 inherit pub_methods_classipc_1_1session_1_1Session__mv"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1Session__mv.html#a6d8cdbb86140056a7e7d2931ea642b18">open_channel</a> (<a class="el" href="classipc_1_1session_1_1Session__mv.html#ab92df09d894e6e1aaf3c2733da594fd2">Channel_obj</a> *target_channel, const <a class="el" href="classipc_1_1session_1_1Session__mv.html#a787253f02859ea6b99ce3eba92766431">Mdt_builder_ptr</a> &amp;mdt, <a class="el" href="namespaceipc.html#aa3192e586cc45d3e7c22463bf2760f89">Error_code</a> *err_code=0)</td></tr>
<tr class="memdesc:a6d8cdbb86140056a7e7d2931ea642b18 inherit pub_methods_classipc_1_1session_1_1Session__mv"><td class="mdescLeft">&#160;</td><td class="mdescRight">Implements Session API per contract.  <a href="classipc_1_1session_1_1Session__mv.html#a6d8cdbb86140056a7e7d2931ea642b18">More...</a><br /></td></tr>
<tr class="separator:a6d8cdbb86140056a7e7d2931ea642b18 inherit pub_methods_classipc_1_1session_1_1Session__mv"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a84e80e24d7b16da0a9ecf83057acfd8e inherit pub_methods_classipc_1_1session_1_1Session__mv"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1Session__mv.html#a84e80e24d7b16da0a9ecf83057acfd8e">open_channel</a> (<a class="el" href="classipc_1_1session_1_1Session__mv.html#ab92df09d894e6e1aaf3c2733da594fd2">Channel_obj</a> *target_channel, <a class="el" href="namespaceipc.html#aa3192e586cc45d3e7c22463bf2760f89">Error_code</a> *err_code=0)</td></tr>
<tr class="memdesc:a84e80e24d7b16da0a9ecf83057acfd8e inherit pub_methods_classipc_1_1session_1_1Session__mv"><td class="mdescLeft">&#160;</td><td class="mdescRight">Implements Session API per contract.  <a href="classipc_1_1session_1_1Session__mv.html#a84e80e24d7b16da0a9ecf83057acfd8e">More...</a><br /></td></tr>
<tr class="separator:a84e80e24d7b16da0a9ecf83057acfd8e inherit pub_methods_classipc_1_1session_1_1Session__mv"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a749f1f679f858d2dce8562cdddc60195 inherit pub_methods_classipc_1_1session_1_1Session__mv"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="namespaceipc_1_1session.html#ade2b302f1a3623e8adc9694568d94d2c">Session_token</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1Session__mv.html#a749f1f679f858d2dce8562cdddc60195">session_token</a> () const</td></tr>
<tr class="memdesc:a749f1f679f858d2dce8562cdddc60195 inherit pub_methods_classipc_1_1session_1_1Session__mv"><td class="mdescLeft">&#160;</td><td class="mdescRight">Implements Session API per contract.  <a href="classipc_1_1session_1_1Session__mv.html#a749f1f679f858d2dce8562cdddc60195">More...</a><br /></td></tr>
<tr class="separator:a749f1f679f858d2dce8562cdddc60195 inherit pub_methods_classipc_1_1session_1_1Session__mv"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a107684fdd5d233549c6daac26a81a542 inherit pub_methods_classipc_1_1session_1_1Session__mv"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structipc_1_1transport_1_1struc_1_1Heap__fixed__builder_1_1Config.html">transport::struc::Heap_fixed_builder::Config</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1Session__mv.html#a107684fdd5d233549c6daac26a81a542">heap_fixed_builder_config</a> ()</td></tr>
<tr class="memdesc:a107684fdd5d233549c6daac26a81a542 inherit pub_methods_classipc_1_1session_1_1Session__mv"><td class="mdescLeft">&#160;</td><td class="mdescRight">Utility that obtains a heap-based (non-zero-copy) Struct_builder::Config, constructed with the most efficient yet safe values, for transport::struc::Msg_out (out-messages) compatible with <a class="el" href="classipc_1_1session_1_1Session__mv.html#ac205819d4a3a066f31b5af311ff40a2a" title="Implements Session API per contract.">Structured_channel</a> upgraded-from <a class="el" href="classipc_1_1session_1_1Session__mv.html#ab92df09d894e6e1aaf3c2733da594fd2" title="Implements Session API per contract.">Channel_obj</a> channels opened via <code>*this</code> Session_mv.  <a href="classipc_1_1session_1_1Session__mv.html#a107684fdd5d233549c6daac26a81a542">More...</a><br /></td></tr>
<tr class="separator:a107684fdd5d233549c6daac26a81a542 inherit pub_methods_classipc_1_1session_1_1Session__mv"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab3c69e3f8ccbd70d315bed86d697255d inherit pub_methods_classipc_1_1session_1_1Session__mv"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structipc_1_1transport_1_1struc_1_1Heap__reader_1_1Config.html">transport::struc::Heap_reader::Config</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1Session__mv.html#ab3c69e3f8ccbd70d315bed86d697255d">heap_reader_config</a> ()</td></tr>
<tr class="memdesc:ab3c69e3f8ccbd70d315bed86d697255d inherit pub_methods_classipc_1_1session_1_1Session__mv"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deserializing counterpart to non-<code>static</code> <a class="el" href="classipc_1_1session_1_1Session__mv.html#a107684fdd5d233549c6daac26a81a542" title="Utility that obtains a heap-based (non-zero-copy) Struct_builder::Config, constructed with the most e...">heap_fixed_builder_config()</a>.  <a href="classipc_1_1session_1_1Session__mv.html#ab3c69e3f8ccbd70d315bed86d697255d">More...</a><br /></td></tr>
<tr class="separator:ab3c69e3f8ccbd70d315bed86d697255d inherit pub_methods_classipc_1_1session_1_1Session__mv"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a142df6d6db09962a1dc0f536bf4977f0 inherit pub_methods_classipc_1_1session_1_1Session__mv"><td class="memItemLeft" align="right" valign="top">flow::log::Logger *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1Session__mv.html#a142df6d6db09962a1dc0f536bf4977f0">get_logger</a> () const</td></tr>
<tr class="memdesc:a142df6d6db09962a1dc0f536bf4977f0 inherit pub_methods_classipc_1_1session_1_1Session__mv"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns logger (possibly null).  <a href="classipc_1_1session_1_1Session__mv.html#a142df6d6db09962a1dc0f536bf4977f0">More...</a><br /></td></tr>
<tr class="separator:a142df6d6db09962a1dc0f536bf4977f0 inherit pub_methods_classipc_1_1session_1_1Session__mv"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a23b43187319871c4974755175973008e inherit pub_methods_classipc_1_1session_1_1Session__mv"><td class="memItemLeft" align="right" valign="top">const flow::log::Component &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1Session__mv.html#a23b43187319871c4974755175973008e">get_log_component</a> () const</td></tr>
<tr class="memdesc:a23b43187319871c4974755175973008e inherit pub_methods_classipc_1_1session_1_1Session__mv"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns log component.  <a href="classipc_1_1session_1_1Session__mv.html#a23b43187319871c4974755175973008e">More...</a><br /></td></tr>
<tr class="separator:a23b43187319871c4974755175973008e inherit pub_methods_classipc_1_1session_1_1Session__mv"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pro-methods" name="pro-methods"></a>
Protected Member Functions</h2></td></tr>
<tr class="memitem:a3a407e1a87e5b384c3903ede62cca650"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session.html#a3a407e1a87e5b384c3903ede62cca650">Server_session</a> (flow::log::Logger *logger_ptr, const <a class="el" href="structipc_1_1session_1_1Server__app.html">Server_app</a> &amp;srv_app_ref, <a class="el" href="classipc_1_1transport_1_1Native__socket__stream.html">transport::Native_socket_stream</a> &amp;&amp;master_channel_sock_stm)</td></tr>
<tr class="memdesc:a3a407e1a87e5b384c3903ede62cca650"><td class="mdescLeft">&#160;</td><td class="mdescRight">For use by internal user <a class="el" href="classipc_1_1session_1_1Session__server__impl.html" title="Internal class template comprising API/logic common to every Session_server variant,...">Session_server_impl</a>: constructor.  <a href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session.html#a3a407e1a87e5b384c3903ede62cca650">More...</a><br /></td></tr>
<tr class="separator:a3a407e1a87e5b384c3903ede62cca650"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_methods_classipc_1_1session_1_1Server__session__mv"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_classipc_1_1session_1_1Server__session__mv')"><img src="closed.png" alt="-"/>&#160;Protected Member Functions inherited from <a class="el" href="classipc_1_1session_1_1Server__session__mv.html">ipc::session::Server_session_mv&lt; Server_session_impl&lt; S_MQ_TYPE_OR_NONE, S_TRANSMIT_NATIVE_HANDLES, Mdt_payload &gt; &gt;</a></td></tr>
<tr class="memitem:ae190ff87b86aab1a68374789791553e1 inherit pro_methods_classipc_1_1session_1_1Server__session__mv"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1Server__session__mv.html#ae190ff87b86aab1a68374789791553e1">Server_session_mv</a> (flow::log::Logger *logger_ptr, const <a class="el" href="structipc_1_1session_1_1Server__app.html">Server_app</a> &amp;srv_app_ref, <a class="el" href="classipc_1_1transport_1_1sync__io_1_1Native__socket__stream.html">transport::sync_io::Native_socket_stream</a> &amp;&amp;master_channel_sock_stm)</td></tr>
<tr class="memdesc:ae190ff87b86aab1a68374789791553e1 inherit pro_methods_classipc_1_1session_1_1Server__session__mv"><td class="mdescLeft">&#160;</td><td class="mdescRight">For use by internal user Session_server_impl: constructor.  <a href="classipc_1_1session_1_1Server__session__mv.html#ae190ff87b86aab1a68374789791553e1">More...</a><br /></td></tr>
<tr class="separator:ae190ff87b86aab1a68374789791553e1 inherit pro_methods_classipc_1_1session_1_1Server__session__mv"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a74d647e2f555465c28065dc11cd092cb inherit pro_methods_classipc_1_1session_1_1Server__session__mv"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1Server__session__mv.html#a74d647e2f555465c28065dc11cd092cb">async_accept_log_in</a> (Session_server_impl_t *srv, typename <a class="el" href="classipc_1_1session_1_1Session__mv.html#af87da439644b2afd73d6a13d97e7985f">Base::Channels</a> *init_channels_by_srv_req, typename <a class="el" href="classipc_1_1session_1_1Session__mv.html#a2b1215fb0c9738b9fcfbb337d23c43df">Base::Mdt_reader_ptr</a> *mdt_from_cli_or_null, typename <a class="el" href="classipc_1_1session_1_1Session__mv.html#af87da439644b2afd73d6a13d97e7985f">Base::Channels</a> *init_channels_by_cli_req, Cli_app_lookup_func &amp;&amp;cli_app_lookup_func, Cli_namespace_func &amp;&amp;cli_namespace_func, Pre_rsp_setup_func &amp;&amp;pre_rsp_setup_func, N_init_channels_by_srv_req_func &amp;&amp;n_init_channels_by_srv_req_func, Mdt_load_func &amp;&amp;mdt_load_func, Task_err &amp;&amp;on_done_func)</td></tr>
<tr class="memdesc:a74d647e2f555465c28065dc11cd092cb inherit pro_methods_classipc_1_1session_1_1Server__session__mv"><td class="mdescLeft">&#160;</td><td class="mdescRight">For use by internal user Session_server: called no more than once, ideally immediately following ctor, this attempts to get <code>*this</code> asynchronously to almost-PEER state by undergoing the log-in request/response (plus, if needed, init-channel-opening) procedure (the other side of which is done by Client_session_impl::sync_connect()).  <a href="classipc_1_1session_1_1Server__session__mv.html#a74d647e2f555465c28065dc11cd092cb">More...</a><br /></td></tr>
<tr class="separator:a74d647e2f555465c28065dc11cd092cb inherit pro_methods_classipc_1_1session_1_1Server__session__mv"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_methods_classipc_1_1session_1_1Session__mv"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_classipc_1_1session_1_1Session__mv')"><img src="closed.png" alt="-"/>&#160;Protected Member Functions inherited from <a class="el" href="classipc_1_1session_1_1Session__mv.html">ipc::session::Session_mv&lt; Server_session_impl&lt; S_MQ_TYPE_OR_NONE, S_TRANSMIT_NATIVE_HANDLES, Mdt_payload &gt; &gt;</a></td></tr>
<tr class="memitem:a7589e9e086afae1d8be969c8e6c1987d inherit pro_methods_classipc_1_1session_1_1Session__mv"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classipc_1_1session_1_1Session__mv.html#acb47dfa0f5645cf2da7d62ac5862e8cc">Session_base_obj</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1Session__mv.html#a7589e9e086afae1d8be969c8e6c1987d">base</a> () const</td></tr>
<tr class="memdesc:a7589e9e086afae1d8be969c8e6c1987d inherit pro_methods_classipc_1_1session_1_1Session__mv"><td class="mdescLeft">&#160;</td><td class="mdescRight">Provides <code>const</code> access to Session_base super-object.  <a href="classipc_1_1session_1_1Session__mv.html#a7589e9e086afae1d8be969c8e6c1987d">More...</a><br /></td></tr>
<tr class="separator:a7589e9e086afae1d8be969c8e6c1987d inherit pro_methods_classipc_1_1session_1_1Session__mv"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae5e646ae3649914384cb2e7f94aa7a25 inherit pro_methods_classipc_1_1session_1_1Session__mv"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classipc_1_1session_1_1Session__mv.html#a457c661352bf3111ca4f707c15d51b3e">Impl_ptr</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1Session__mv.html#ae5e646ae3649914384cb2e7f94aa7a25">impl</a> ()</td></tr>
<tr class="memdesc:ae5e646ae3649914384cb2e7f94aa7a25 inherit pro_methods_classipc_1_1session_1_1Session__mv"><td class="mdescLeft">&#160;</td><td class="mdescRight">pImpl target; particularly for sub-classes that must add to the above <code>public</code> API.  <a href="classipc_1_1session_1_1Session__mv.html#ae5e646ae3649914384cb2e7f94aa7a25">More...</a><br /></td></tr>
<tr class="separator:ae5e646ae3649914384cb2e7f94aa7a25 inherit pro_methods_classipc_1_1session_1_1Session__mv"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a025cd4b449dbfc68008ac9379a07ca63 inherit pro_methods_classipc_1_1session_1_1Session__mv"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classipc_1_1session_1_1Session__mv.html#a457c661352bf3111ca4f707c15d51b3e">Impl_ptr</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1Session__mv.html#a025cd4b449dbfc68008ac9379a07ca63">impl</a> () const</td></tr>
<tr class="memdesc:a025cd4b449dbfc68008ac9379a07ca63 inherit pro_methods_classipc_1_1session_1_1Session__mv"><td class="mdescLeft">&#160;</td><td class="mdescRight">pImpl target; particularly for sub-classes that must add to the above <code>public</code> API.  <a href="classipc_1_1session_1_1Session__mv.html#a025cd4b449dbfc68008ac9379a07ca63">More...</a><br /></td></tr>
<tr class="separator:a025cd4b449dbfc68008ac9379a07ca63 inherit pro_methods_classipc_1_1session_1_1Session__mv"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="related" name="related"></a>
Related Functions</h2></td></tr>
<tr><td class="ititle" colspan="2"><p >(Note that these are not member functions.) </p>
</td></tr>
<tr class="memitem:a8fc81db9a5adc7b6efc8529b5f1d98d2"><td class="memTemplParams" colspan="2">template&lt;session::schema::MqType S_MQ_TYPE_OR_NONE, bool S_TRANSMIT_NATIVE_HANDLES, typename Mdt_payload &gt; </td></tr>
<tr class="memitem:a8fc81db9a5adc7b6efc8529b5f1d98d2"><td class="memTemplItemLeft" align="right" valign="top">std::ostream &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session.html#a8fc81db9a5adc7b6efc8529b5f1d98d2">operator&lt;&lt;</a> (std::ostream &amp;os, const <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session.html">Server_session</a>&lt; S_MQ_TYPE_OR_NONE, S_TRANSMIT_NATIVE_HANDLES, Mdt_payload &gt; &amp;val)</td></tr>
<tr class="memdesc:a8fc81db9a5adc7b6efc8529b5f1d98d2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Prints string representation of the given <code><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session.html" title="Identical to session::Server_session in every way, except that it makes available two SHM arenas,...">Server_session</a></code> to the given <code>ostream</code>.  <a href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session.html#a8fc81db9a5adc7b6efc8529b5f1d98d2">More...</a><br /></td></tr>
<tr class="separator:a8fc81db9a5adc7b6efc8529b5f1d98d2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header related_classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv"><td colspan="2" onclick="javascript:toggleInherit('related_classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv')"><img src="closed.png" alt="-"/>&#160;Related Functions inherited from <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html">ipc::session::shm::arena_lend::jemalloc::Session_mv&lt; session::Server_session_mv&lt; Server_session_impl&lt; S_MQ_TYPE_OR_NONE, S_TRANSMIT_NATIVE_HANDLES, Mdt_payload &gt; &gt; &gt;</a></td></tr>
<tr class="memitem:aea882d38a00f81a98d6604e300c5a01a inherit related_classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv"><td class="memItemLeft" align="right" valign="top">std::ostream &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#aea882d38a00f81a98d6604e300c5a01a">operator&lt;&lt;</a> (std::ostream &amp;os, const <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html">Session_mv</a>&lt; <a class="el" href="classipc_1_1session_1_1Server__session__mv.html">session::Server_session_mv</a>&lt; <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session__impl.html">Server_session_impl</a>&lt; S_MQ_TYPE_OR_NONE, S_TRANSMIT_NATIVE_HANDLES, Mdt_payload &gt; &gt; &gt; &amp;val)</td></tr>
<tr class="memdesc:aea882d38a00f81a98d6604e300c5a01a inherit related_classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv"><td class="mdescLeft">&#160;</td><td class="mdescRight">Prints string representation of the given <code>Session_mv</code> to the given <code>ostream</code>.  <a href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#aea882d38a00f81a98d6604e300c5a01a">More...</a><br /></td></tr>
<tr class="separator:aea882d38a00f81a98d6604e300c5a01a inherit related_classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header related_classipc_1_1session_1_1Server__session__mv"><td colspan="2" onclick="javascript:toggleInherit('related_classipc_1_1session_1_1Server__session__mv')"><img src="closed.png" alt="-"/>&#160;Related Functions inherited from <a class="el" href="classipc_1_1session_1_1Server__session__mv.html">ipc::session::Server_session_mv&lt; Server_session_impl&lt; S_MQ_TYPE_OR_NONE, S_TRANSMIT_NATIVE_HANDLES, Mdt_payload &gt; &gt;</a></td></tr>
<tr class="memitem:aed5397fd025606507ad8dab74479762f inherit related_classipc_1_1session_1_1Server__session__mv"><td class="memItemLeft" align="right" valign="top">std::ostream &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1Server__session__mv.html#aed5397fd025606507ad8dab74479762f">operator&lt;&lt;</a> (std::ostream &amp;os, const <a class="el" href="classipc_1_1session_1_1Server__session__mv.html">Server_session_mv</a>&lt; <a class="el" href="classipc_1_1session_1_1Server__session__impl.html">Server_session_impl</a>&lt; S_MQ_TYPE_OR_NONE, S_TRANSMIT_NATIVE_HANDLES, Mdt_payload &gt; &gt; &amp;val)</td></tr>
<tr class="memdesc:aed5397fd025606507ad8dab74479762f inherit related_classipc_1_1session_1_1Server__session__mv"><td class="mdescLeft">&#160;</td><td class="mdescRight">Prints string representation of the given <code>Server_session_mv</code> to the given <code>ostream</code>.  <a href="classipc_1_1session_1_1Server__session__mv.html#aed5397fd025606507ad8dab74479762f">More...</a><br /></td></tr>
<tr class="separator:aed5397fd025606507ad8dab74479762f inherit related_classipc_1_1session_1_1Server__session__mv"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header related_classipc_1_1session_1_1Session__mv"><td colspan="2" onclick="javascript:toggleInherit('related_classipc_1_1session_1_1Session__mv')"><img src="closed.png" alt="-"/>&#160;Related Functions inherited from <a class="el" href="classipc_1_1session_1_1Session__mv.html">ipc::session::Session_mv&lt; Server_session_impl&lt; S_MQ_TYPE_OR_NONE, S_TRANSMIT_NATIVE_HANDLES, Mdt_payload &gt; &gt;</a></td></tr>
<tr class="memitem:a07c2d7a228f070e32bf4f1fbc64e1f6d inherit related_classipc_1_1session_1_1Session__mv"><td class="memItemLeft" align="right" valign="top">std::ostream &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1Session__mv.html#a07c2d7a228f070e32bf4f1fbc64e1f6d">operator&lt;&lt;</a> (std::ostream &amp;os, const <a class="el" href="classipc_1_1session_1_1Session__mv.html">Session_mv</a>&lt; <a class="el" href="classipc_1_1session_1_1Server__session__impl.html">Server_session_impl</a>&lt; S_MQ_TYPE_OR_NONE, S_TRANSMIT_NATIVE_HANDLES, Mdt_payload &gt; &gt; &amp;val)</td></tr>
<tr class="memdesc:a07c2d7a228f070e32bf4f1fbc64e1f6d inherit related_classipc_1_1session_1_1Session__mv"><td class="mdescLeft">&#160;</td><td class="mdescRight">Prints string representation of the given <code>Session_mv</code> to the given <code>ostream</code>.  <a href="classipc_1_1session_1_1Session__mv.html#a07c2d7a228f070e32bf4f1fbc64e1f6d">More...</a><br /></td></tr>
<tr class="separator:a07c2d7a228f070e32bf4f1fbc64e1f6d inherit related_classipc_1_1session_1_1Session__mv"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="inherited" name="inherited"></a>
Additional Inherited Members</h2></td></tr>
<tr class="inherit_header pub_static_methods_classipc_1_1session_1_1Session__mv"><td colspan="2" onclick="javascript:toggleInherit('pub_static_methods_classipc_1_1session_1_1Session__mv')"><img src="closed.png" alt="-"/>&#160;Static Public Member Functions inherited from <a class="el" href="classipc_1_1session_1_1Session__mv.html">ipc::session::Session_mv&lt; Server_session_impl&lt; S_MQ_TYPE_OR_NONE, S_TRANSMIT_NATIVE_HANDLES, Mdt_payload &gt; &gt;</a></td></tr>
<tr class="memitem:a26dfe4dd3ff57daab5a36a037f835c4e inherit pub_static_methods_classipc_1_1session_1_1Session__mv"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="structipc_1_1transport_1_1struc_1_1Heap__fixed__builder_1_1Config.html">transport::struc::Heap_fixed_builder::Config</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1Session__mv.html#a26dfe4dd3ff57daab5a36a037f835c4e">heap_fixed_builder_config</a> (flow::log::Logger *logger_ptr)</td></tr>
<tr class="memdesc:a26dfe4dd3ff57daab5a36a037f835c4e inherit pub_static_methods_classipc_1_1session_1_1Session__mv"><td class="mdescLeft">&#160;</td><td class="mdescRight">Utility that obtains a heap-based (non-zero-copy) Struct_builder::Config, constructed with the most efficient yet safe values, for transport::struc::Msg_out (out-messages) compatible with <a class="el" href="classipc_1_1session_1_1Session__mv.html#ac205819d4a3a066f31b5af311ff40a2a" title="Implements Session API per contract.">Structured_channel</a> upgraded-from <a class="el" href="classipc_1_1session_1_1Session__mv.html#ab92df09d894e6e1aaf3c2733da594fd2" title="Implements Session API per contract.">Channel_obj</a> channels opened via this Session_mv type.  <a href="classipc_1_1session_1_1Session__mv.html#a26dfe4dd3ff57daab5a36a037f835c4e">More...</a><br /></td></tr>
<tr class="separator:a26dfe4dd3ff57daab5a36a037f835c4e inherit pub_static_methods_classipc_1_1session_1_1Session__mv"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a411feb974e2b7ed48b08ac50bcdf43b3 inherit pub_static_methods_classipc_1_1session_1_1Session__mv"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="structipc_1_1transport_1_1struc_1_1Heap__reader_1_1Config.html">transport::struc::Heap_reader::Config</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1Session__mv.html#a411feb974e2b7ed48b08ac50bcdf43b3">heap_reader_config</a> (flow::log::Logger *logger_ptr)</td></tr>
<tr class="memdesc:a411feb974e2b7ed48b08ac50bcdf43b3 inherit pub_static_methods_classipc_1_1session_1_1Session__mv"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deserializing counterpart to <code>static</code> <a class="el" href="classipc_1_1session_1_1Session__mv.html#a107684fdd5d233549c6daac26a81a542" title="Utility that obtains a heap-based (non-zero-copy) Struct_builder::Config, constructed with the most e...">heap_fixed_builder_config()</a>.  <a href="classipc_1_1session_1_1Session__mv.html#a411feb974e2b7ed48b08ac50bcdf43b3">More...</a><br /></td></tr>
<tr class="separator:a411feb974e2b7ed48b08ac50bcdf43b3 inherit pub_static_methods_classipc_1_1session_1_1Session__mv"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_static_attribs_classipc_1_1session_1_1Session__mv"><td colspan="2" onclick="javascript:toggleInherit('pub_static_attribs_classipc_1_1session_1_1Session__mv')"><img src="closed.png" alt="-"/>&#160;Static Public Attributes inherited from <a class="el" href="classipc_1_1session_1_1Session__mv.html">ipc::session::Session_mv&lt; Server_session_impl&lt; S_MQ_TYPE_OR_NONE, S_TRANSMIT_NATIVE_HANDLES, Mdt_payload &gt; &gt;</a></td></tr>
<tr class="memitem:a74af091662cb7c32e0f1c60baac3613b inherit pub_static_attribs_classipc_1_1session_1_1Session__mv"><td class="memItemLeft" align="right" valign="top">static constexpr schema::ShmType&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1Session__mv.html#a74af091662cb7c32e0f1c60baac3613b">S_SHM_TYPE</a></td></tr>
<tr class="memdesc:a74af091662cb7c32e0f1c60baac3613b inherit pub_static_attribs_classipc_1_1session_1_1Session__mv"><td class="mdescLeft">&#160;</td><td class="mdescRight">Implements Session API per contract.  <a href="classipc_1_1session_1_1Session__mv.html#a74af091662cb7c32e0f1c60baac3613b">More...</a><br /></td></tr>
<tr class="separator:a74af091662cb7c32e0f1c60baac3613b inherit pub_static_attribs_classipc_1_1session_1_1Session__mv"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a62945e465ae734523036215750c90ba4 inherit pub_static_attribs_classipc_1_1session_1_1Session__mv"><td class="memItemLeft" align="right" valign="top">static constexpr bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1Session__mv.html#a62945e465ae734523036215750c90ba4">S_SHM_ENABLED</a></td></tr>
<tr class="memdesc:a62945e465ae734523036215750c90ba4 inherit pub_static_attribs_classipc_1_1session_1_1Session__mv"><td class="mdescLeft">&#160;</td><td class="mdescRight">Implements Session API per contract.  <a href="classipc_1_1session_1_1Session__mv.html#a62945e465ae734523036215750c90ba4">More...</a><br /></td></tr>
<tr class="separator:a62945e465ae734523036215750c90ba4 inherit pub_static_attribs_classipc_1_1session_1_1Session__mv"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6a87002dccab497da76bb286d5a4bf95 inherit pub_static_attribs_classipc_1_1session_1_1Session__mv"><td class="memItemLeft" align="right" valign="top">static constexpr bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1Session__mv.html#a6a87002dccab497da76bb286d5a4bf95">S_MQS_ENABLED</a></td></tr>
<tr class="memdesc:a6a87002dccab497da76bb286d5a4bf95 inherit pub_static_attribs_classipc_1_1session_1_1Session__mv"><td class="mdescLeft">&#160;</td><td class="mdescRight">Compile-time-known constant indicating whether <a class="el" href="classipc_1_1session_1_1Session__mv.html#ab92df09d894e6e1aaf3c2733da594fd2" title="Implements Session API per contract.">Channel_obj</a> shall use a blobs pipe over message queues (MQs).  <a href="classipc_1_1session_1_1Session__mv.html#a6a87002dccab497da76bb286d5a4bf95">More...</a><br /></td></tr>
<tr class="separator:a6a87002dccab497da76bb286d5a4bf95 inherit pub_static_attribs_classipc_1_1session_1_1Session__mv"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:addc597e6bf3555dc3788116c8cc179dd inherit pub_static_attribs_classipc_1_1session_1_1Session__mv"><td class="memItemLeft" align="right" valign="top">static constexpr bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1Session__mv.html#addc597e6bf3555dc3788116c8cc179dd">S_SOCKET_STREAM_ENABLED</a></td></tr>
<tr class="memdesc:addc597e6bf3555dc3788116c8cc179dd inherit pub_static_attribs_classipc_1_1session_1_1Session__mv"><td class="mdescLeft">&#160;</td><td class="mdescRight">Compile-time-known constant indicating whether <a class="el" href="classipc_1_1session_1_1Session__mv.html#ab92df09d894e6e1aaf3c2733da594fd2" title="Implements Session API per contract.">Channel_obj</a> shall use socket stream for any type of pipe.  <a href="classipc_1_1session_1_1Session__mv.html#addc597e6bf3555dc3788116c8cc179dd">More...</a><br /></td></tr>
<tr class="separator:addc597e6bf3555dc3788116c8cc179dd inherit pub_static_attribs_classipc_1_1session_1_1Session__mv"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_types_classipc_1_1session_1_1Session__mv"><td colspan="2" onclick="javascript:toggleInherit('pro_types_classipc_1_1session_1_1Session__mv')"><img src="closed.png" alt="-"/>&#160;Protected Types inherited from <a class="el" href="classipc_1_1session_1_1Session__mv.html">ipc::session::Session_mv&lt; Server_session_impl&lt; S_MQ_TYPE_OR_NONE, S_TRANSMIT_NATIVE_HANDLES, Mdt_payload &gt; &gt;</a></td></tr>
<tr class="memitem:af2c186e7b4be09bff30b42aa2482dd93 inherit pro_types_classipc_1_1session_1_1Session__mv"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1Session__mv.html#af2c186e7b4be09bff30b42aa2482dd93">Impl</a> = <a class="el" href="classipc_1_1session_1_1Server__session__impl.html">Server_session_impl</a>&lt; S_MQ_TYPE_OR_NONE, S_TRANSMIT_NATIVE_HANDLES, Mdt_payload &gt;</td></tr>
<tr class="memdesc:af2c186e7b4be09bff30b42aa2482dd93 inherit pro_types_classipc_1_1session_1_1Session__mv"><td class="mdescLeft">&#160;</td><td class="mdescRight">Short-hand for pImpl-lite impl type. This shall be the deepest impl sub-class desired.  <a href="classipc_1_1session_1_1Session__mv.html#af2c186e7b4be09bff30b42aa2482dd93">More...</a><br /></td></tr>
<tr class="separator:af2c186e7b4be09bff30b42aa2482dd93 inherit pro_types_classipc_1_1session_1_1Session__mv"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acb47dfa0f5645cf2da7d62ac5862e8cc inherit pro_types_classipc_1_1session_1_1Session__mv"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1Session__mv.html#acb47dfa0f5645cf2da7d62ac5862e8cc">Session_base_obj</a> = typename <a class="el" href="classipc_1_1session_1_1Server__session__impl.html#a3797b21c6b9c430471e3d9835acb2979">Impl::Session_base_obj</a></td></tr>
<tr class="memdesc:acb47dfa0f5645cf2da7d62ac5862e8cc inherit pro_types_classipc_1_1session_1_1Session__mv"><td class="mdescLeft">&#160;</td><td class="mdescRight">Short-hand for <a class="el" href="classipc_1_1session_1_1Session__mv.html#af2c186e7b4be09bff30b42aa2482dd93" title="Short-hand for pImpl-lite impl type. This shall be the deepest impl sub-class desired.">Impl</a>'s Session_base super-class.  <a href="classipc_1_1session_1_1Session__mv.html#acb47dfa0f5645cf2da7d62ac5862e8cc">More...</a><br /></td></tr>
<tr class="separator:acb47dfa0f5645cf2da7d62ac5862e8cc inherit pro_types_classipc_1_1session_1_1Session__mv"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a457c661352bf3111ca4f707c15d51b3e inherit pro_types_classipc_1_1session_1_1Session__mv"><td class="memItemLeft" align="right" valign="top">using&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classipc_1_1session_1_1Session__mv.html#a457c661352bf3111ca4f707c15d51b3e">Impl_ptr</a> = std::experimental::propagate_const&lt; boost::movelib::unique_ptr&lt; <a class="el" href="classipc_1_1session_1_1Session__mv.html#af2c186e7b4be09bff30b42aa2482dd93">Impl</a> &gt; &gt;</td></tr>
<tr class="memdesc:a457c661352bf3111ca4f707c15d51b3e inherit pro_types_classipc_1_1session_1_1Session__mv"><td class="mdescLeft">&#160;</td><td class="mdescRight">Short-hand for <code>const</code>-respecting wrapper around <a class="el" href="classipc_1_1session_1_1Session__mv.html#af2c186e7b4be09bff30b42aa2482dd93" title="Short-hand for pImpl-lite impl type. This shall be the deepest impl sub-class desired.">Impl</a> for the pImpl idiom. See <a class="el" href="classipc_1_1session_1_1Session__mv.html#ae5e646ae3649914384cb2e7f94aa7a25" title="pImpl target; particularly for sub-classes that must add to the above public API.">impl()</a>.  <a href="classipc_1_1session_1_1Session__mv.html#a457c661352bf3111ca4f707c15d51b3e">More...</a><br /></td></tr>
<tr class="separator:a457c661352bf3111ca4f707c15d51b3e inherit pro_types_classipc_1_1session_1_1Session__mv"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><div class="compoundTemplParams">template&lt;session::schema::MqType S_MQ_TYPE_OR_NONE, bool S_TRANSMIT_NATIVE_HANDLES, typename Mdt_payload&gt;<br />
class ipc::session::shm::arena_lend::jemalloc::Server_session&lt; S_MQ_TYPE_OR_NONE, S_TRANSMIT_NATIVE_HANDLES, Mdt_payload &gt;</div><p >Identical to <a class="el" href="namespaceipc_1_1session.html#ab01d5bce0ab2f3435ca9dd88d27609dc" title="A vanilla Server_session with no optional capabilities.">session::Server_session</a> in every way, except that it makes available two SHM arenas, from the SHM-jemalloc provider (ipc::shm::arena_lend::jemalloc). </p>
<p >These SHM arenas (see <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session.html#a988281add5dc4a31202cfba47f458e5a" title="Short-hand for base class member alias Session_mv::Arena. Its doc header contains useful context and ...">Arena</a> doc header) have different scopes:</p><ul>
<li>Per-session-scope, accessible via <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a361c867d10a255ff62cdb19b75fc0a18" title="Returns SHM Arena with per-session scope, meaning it shall be accessible only during the lifetime of ...">session_shm()</a>: meaning it shall be accessible only during the lifetime of this session, by this <a class="el" href="classipc_1_1session_1_1Session.html" title="A documentation-only concept defining the local side of an IPC conversation (session) with another en...">Session</a> (via this accessor).<ul>
<li>Hence this arena is created at the time <code>*this</code> enters PEER state (near <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#a4b451906ee2b46d230df5f252bbb64ed" title="Contract identical to simpler session::Session_server::async_accept() overload; but internally ensure...">Session_server::async_accept()</a> successfully yielding <code>*this</code>). When <code>*this</code> is destroyed or hosed, the arena is invalidated.</li>
</ul>
</li>
<li>Per-app-scope, meaning its pool shall be accessible potentially beyond the lifetime of this session but rather until the generating <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html" title="This is to vanilla Session_server what shm::arena_lend::jemalloc::Server_session is to vanilla Server...">Session_server</a> (i.e., server process) shuts down, by any <a class="el" href="classipc_1_1session_1_1Session.html" title="A documentation-only concept defining the local side of an IPC conversation (session) with another en...">Session</a> under that umbrella, now or in the future, as long as its <a class="el" href="structipc_1_1session_1_1Client__app.html" title="An App that is used as a client in at least one client-server IPC split.">Client_app</a> equals that of <code>*this</code> session.<ul>
<li>Hence this arena is created at the time the <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html" title="This is to vanilla Session_server what shm::arena_lend::jemalloc::Server_session is to vanilla Server...">shm::arena_lend::jemalloc::Session_server</a> (emitter of <code>*this</code> to user) first establishes a session with the <em>first</em> <a class="el" href="namespaceipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc.html#a837b4566cb2a734eb0ba58f285d084fe" title="This is to session::Client_session what shm::arena_lend::jemalloc::Server_session is to session::Serv...">shm::arena_lend::jemalloc::Client_session</a> matching the same <a class="el" href="structipc_1_1session_1_1Client__app.html" title="An App that is used as a client in at least one client-server IPC split.">Client_app</a> as <code>*this</code>. I.e., it's created at the same time as <code>this-&gt;<a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a361c867d10a255ff62cdb19b75fc0a18" title="Returns SHM Arena with per-session scope, meaning it shall be accessible only during the lifetime of ...">session_shm()</a></code> is, if <code>*this</code> is the first such session; otherwise earlier. When <code>*this</code> is destroyed or hosed (gracefully at least), the arena is <em>not</em> invalidated but persists.</li>
</ul>
</li>
</ul>
<dl class="section note"><dt>Note</dt><dd>The opposing <a class="el" href="namespaceipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc.html#a837b4566cb2a734eb0ba58f285d084fe" title="This is to session::Client_session what shm::arena_lend::jemalloc::Server_session is to session::Serv...">arena_lend::jemalloc::Client_session</a> is similar but lacks the <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session.html#a20d4838f6ff705bd2ad33de066ae2d4d" title="Returns SHM Arena with per-app scope, meaning its pool shall be accessible potentially beyond the lif...">app_shm()</a> <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session.html#a988281add5dc4a31202cfba47f458e5a" title="Short-hand for base class member alias Session_mv::Arena. Its doc header contains useful context and ...">Arena</a>.</dd></dl>
<h3>Explicitly constructing an object in SHM; lending to opposing side</h3>
<p >This setup is symmetrical w/r/t a given <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session.html" title="Identical to session::Server_session in every way, except that it makes available two SHM arenas,...">shm::arena_lend::jemalloc::Server_session</a>&lt;-&gt;<a class="el" href="namespaceipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc.html#a837b4566cb2a734eb0ba58f285d084fe" title="This is to session::Client_session what shm::arena_lend::jemalloc::Server_session is to session::Serv...">shm::arena_lend::jemalloc::Client_session</a> object pair. Both can create new objects (via respective <code>Arena::construct()</code> methods). Both can write and, of course, read within locally <code>construct()</code>ed objects. Lastly each can transmit any outer handle, returned by <code>construct()</code>, to the opposing side. To do this call <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a1346f63d338304a20bef43d3c93c7562" title="Adds an owner process to the owner set of the given Arena::construct()-ed handle; and returns an opaq...">lend_object()</a>, transmit the returned <code>Blob</code> to the opposing side via any desired IPC form (probably a <a class="el" href="classipc_1_1transport_1_1Channel.html" title="Peer to a bundle of 1-2 full-duplex pipe(s), one for transmitting unstructured binary blobs; the othe...">transport::Channel</a> or <a class="el" href="classipc_1_1transport_1_1struc_1_1Channel.html" title="Owning and wrapping a pre-connected transport::Channel peer (an endpoint of an established channel ov...">transport::struc::Channel</a>), then recover a handle via <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a7880b205b076ddd46537826d3b2028e9" title="Completes the cross-process operation begun by oppsing Session_mv::lend_object() that returned serial...">borrow_object()</a> on that opposing side. As of this writing access to objects on the borrowing side is read-only, for safety reasons, but that could change (most likely becoming an optional mode) at the prerogative of ipc::shm::arena_lend developers. (Do note that <a class="el" href="namespaceipc_1_1shm_1_1classic.html" title="ipc::shm sub-module with the SHM-classic SHM-provider. See ipc::shm doc header for introduction.">ipc::shm::classic</a> allows full write access on the borrower side, as in an arena-sharing SHM-provider by definition both sides allocate and thus write to the same SHM pool(s). However this comes at the expense of safety. Further discussion is up to <a class="el" href="namespaceipc_1_1shm.html" title="Modules for SHared Memory (SHM) support.">ipc::shm</a> docs.)</p>
<dl class="section note"><dt>Note</dt><dd>Be ready for <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a1346f63d338304a20bef43d3c93c7562" title="Adds an owner process to the owner set of the given Arena::construct()-ed handle; and returns an opaq...">Session_mv::lend_object()</a> to return an empty blob and <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a7880b205b076ddd46537826d3b2028e9" title="Completes the cross-process operation begun by oppsing Session_mv::lend_object() that returned serial...">Session_mv::borrow_object()</a> to return a null pointer, both indicating an error: the session is hosed (opposing process likely down). See their doc headers for a bit more info on this.</dd></dl>
<p>By using <code><a class="el" href="classipc_1_1shm_1_1stl_1_1Arena__activator.html" title="RAII-style class operating a stack-like notion of a the given thread&#39;s currently active SHM-aware Are...">shm::stl::Arena_activator</a>&lt;Arena&gt;</code> (alias shm::arena_lend::jemalloc::Ipc_arena_activator) and <a class="el" href="classAllocator.html">Allocator</a> (alias shm::arena_lend::jemalloc::Ipc_arena_allocator) it is possible to construct and transmit not just POD (Plain Old Datatype) objects but combinations of those with unlimited nested levels of STL-compliant containers. On the borrowing side use <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#ae32bce4c9889325f38d7d6f902efe4e8" title="Convenience alias to be used in STL-compliant Ts with our own borrow_object&lt;T&gt;() and &quot;Shm_session::bo...">Borrower_allocator</a> (no activator necessary).</p>
<p >Detailed instructions can be found in those <a class="el" href="namespaceipc_1_1shm_1_1stl.html" title="ipc::shm sub-module providing integration between STL-compliant components (including containers) and...">shm::stl</a> and ipc::shm::arena_lend doc headers.</p>
<h3>Using SHM as backing memory for <a class="el" href="classipc_1_1transport_1_1struc_1_1Channel.html" title="Owning and wrapping a pre-connected transport::Channel peer (an endpoint of an established channel ov...">transport::struc::Channel</a></h3>
<p >Another use of <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a361c867d10a255ff62cdb19b75fc0a18" title="Returns SHM Arena with per-session scope, meaning it shall be accessible only during the lifetime of ...">session_shm()</a> and <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session.html#a20d4838f6ff705bd2ad33de066ae2d4d" title="Returns SHM Arena with per-app scope, meaning its pool shall be accessible potentially beyond the lif...">app_shm()</a> (though only on this session-server side in case of the latter) &ndash; in some ways perhaps superior &ndash; is indirect. The above technique involves manually constructing a C++ data structure and transmitting a short handle to it over IPC thus achieving high performance. It may be desirable, instead, to use a structured message, filled out according to schema. This, of course, is why <a class="el" href="classipc_1_1transport_1_1struc_1_1Channel.html" title="Owning and wrapping a pre-connected transport::Channel peer (an endpoint of an established channel ov...">transport::struc::Channel</a> exists. As is explained in its docs, there is nothing SHM-centered about it. It does however have the key feature that allows one to supply, at compile-time, the builder and reader engines that acquire memory while the user mutates an out-message and later accesses it upon IPC-receipt. Naturally one of the builder/reader pairs uses SHM, instead of regular heap, as the supplier of RAM. Thus when one invokes <a class="el" href="classipc_1_1transport_1_1struc_1_1Channel.html#ae645cb58ad9ea6374970f1f32c5da448" title="In the synchronous/non-blocking manner of Blob_sender::send_blob() or Native_handle_sender::send_nati...">transport::struc::Channel::send()</a> and receives it in the opposing object, the actual bits copied into/out of the low-level transport are merely the SHM handle (and all of this is hidden from the user outside of the delightful near-zero-copy perf properties).</p>
<p >There are two ways to make this happen. The easiest and best way is, when constructing the <code>struc::Channel</code>, to use the alias <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a44555ea9786408cd39652d45758bcabc" title="Implements Session API per contract.">session::shm::arena_lend::jemalloc::Session_mv::Structured_channel</a> and create one via tag-form ctor with tag <a class="el" href="structipc_1_1transport_1_1struc_1_1Channel__base_1_1Serialize__via__session__shm.html" title="Tag type for ctor selection: Backing RAM for serialization comes from a given session::Session&#39;s SHM ...">transport::struc::Channel_base::Serialize_via_session_shm</a> (or <code>Serialize_via_app_shm</code>, server-side only). Simply provide that tag and <code>this</code> (or, symmetrically, <code>shm::arena_lend::jemalloc::Client_session::this</code> on the other side).</p>
<p >The harder way, albeit allowing for certain advanced setups, is to manually create a <code>transport::struc::shm::arena_lend::jemalloc::Builder::Config</code> and/or <code>Reader::Config</code>, passing in <code>this-&gt;<a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a361c867d10a255ff62cdb19b75fc0a18" title="Returns SHM Arena with per-session scope, meaning it shall be accessible only during the lifetime of ...">session_shm()</a></code> and/or <code>this-&gt;<a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session.html#a20d4838f6ff705bd2ad33de066ae2d4d" title="Returns SHM Arena with per-app scope, meaning its pool shall be accessible potentially beyond the lif...">app_shm()</a></code> and/or <code>this-&gt;<a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a361c867d10a255ff62cdb19b75fc0a18" title="Returns SHM Arena with per-session scope, meaning it shall be accessible only during the lifetime of ...">session_shm()</a></code>, to those; and then pass the <code>Config</code> or <code>Config</code>s, plus <code>this-&gt;<a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#abde9667974bac936135e6a826e856f9a" title="Returns lend/borrow engine Shm_session for *this session.">shm_session()</a></code>, to the non-tag-form of <code>struc::Channel</code> ctor.</p>
<p >This is all documented on <a class="el" href="classipc_1_1transport_1_1struc_1_1Channel.html" title="Owning and wrapping a pre-connected transport::Channel peer (an endpoint of an established channel ov...">transport::struc::Channel</a>. Do realize, though, that those niceties are really built on this class template and/or the opposing <a class="el" href="namespaceipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc.html#a837b4566cb2a734eb0ba58f285d084fe" title="This is to session::Client_session what shm::arena_lend::jemalloc::Server_session is to session::Serv...">shm::arena_lend::jemalloc::Client_session</a>. To use them with <a class="el" href="namespaceipc_1_1session.html" title="Flow-IPC module providing the broad lifecycle and shared-resource organization – via the session conc...">ipc::session</a>, you must thus choose <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session.html" title="Identical to session::Server_session in every way, except that it makes available two SHM arenas,...">shm::arena_lend::jemalloc::Server_session</a> and <a class="el" href="namespaceipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc.html#a837b4566cb2a734eb0ba58f285d084fe" title="This is to session::Client_session what shm::arena_lend::jemalloc::Server_session is to session::Serv...">shm::arena_lend::jemalloc::Client_session</a> as your <a class="el" href="classipc_1_1session_1_1Session.html" title="A documentation-only concept defining the local side of an IPC conversation (session) with another en...">Session</a> impls.</p>
<h3>Implementation</h3>
<p >It is probably not too difficult to understand how it works by just reading the code and doc headers. The key is that the core is still just what's supplied by a vanilla (non-SHM-aware) <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session.html#a3a407e1a87e5b384c3903ede62cca650" title="For use by internal user Session_server_impl: constructor.">Server_session</a>. Ultimately all we need to add is some setup near the end of the vanilla session-opening procedure. This is easiest to discuss holistically, meaning both the server (<code>*this</code>) and client (opposing) side, so the discussion is all here.</p>
<p >As with the vanilla session setup, remember that while in PEER state the APIs are identical/symmetrical, the roles of the server and client vary quite sharply internally &ndash; especially before PEER state. The general outline is: <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html" title="This is to vanilla Session_server what shm::arena_lend::jemalloc::Server_session is to vanilla Server...">Session_server</a> listens for socket connections; a given <code><a class="el" href="classipc_1_1session_1_1Client__session__mv.html#ab971ea979200828d572638c60d7d9f44" title="To be invoked in NULL state only, and not as-if default-cted, it synchronously and non-blockingly att...">Client_session::sync_connect()</a></code> connects; at this stage <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html" title="This is to vanilla Session_server what shm::arena_lend::jemalloc::Server_session is to vanilla Server...">Session_server</a> constructs a not-yet-user-emitted <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session.html#a3a407e1a87e5b384c3903ede62cca650" title="For use by internal user Session_server_impl: constructor.">Server_session</a> and invokes its <code><a class="el" href="classipc_1_1session_1_1Server__session__mv.html#a74d647e2f555465c28065dc11cd092cb" title="For use by internal user Session_server: called no more than once, ideally immediately following ctor...">async_accept_log_in()</a></code>. Now the <a class="el" href="namespaceipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc.html#a837b4566cb2a734eb0ba58f285d084fe" title="This is to session::Client_session what shm::arena_lend::jemalloc::Server_session is to session::Serv...">Client_session</a> and <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session.html#a3a407e1a87e5b384c3903ede62cca650" title="For use by internal user Session_server_impl: constructor.">Server_session</a> have established a channel (internal-use session master channel) and undergo the log-in exchange. <a class="el" href="namespaceipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc.html#a837b4566cb2a734eb0ba58f285d084fe" title="This is to session::Client_session what shm::arena_lend::jemalloc::Server_session is to session::Serv...">Client_session</a> sends log-in request. <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session.html#a3a407e1a87e5b384c3903ede62cca650" title="For use by internal user Session_server_impl: constructor.">Server_session</a> verifies that, then replies with log-in response (including important bits of generated naming) and enters PEER state. Once <a class="el" href="namespaceipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc.html#a837b4566cb2a734eb0ba58f285d084fe" title="This is to session::Client_session what shm::arena_lend::jemalloc::Server_session is to session::Serv...">Client_session</a> (shortly) receives this response, it knows the session is ready to rock and also enters PEER state. Voila.</p>
<p >Where does SHM-jemalloc setup hook into this? The simpler case is the session-client which manages only one <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session.html#a988281add5dc4a31202cfba47f458e5a" title="Short-hand for base class member alias Session_mv::Arena. Its doc header contains useful context and ...">Arena</a> (per-session scope: <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a361c867d10a255ff62cdb19b75fc0a18" title="Returns SHM Arena with per-session scope, meaning it shall be accessible only during the lifetime of ...">session_shm()</a>), so let's describe it first. In arena-lending SHM-providers, what it takes to construct and lend/borrow object in SHM is:</p><ul>
<li>An <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session.html#a988281add5dc4a31202cfba47f458e5a" title="Short-hand for base class member alias Session_mv::Arena. Its doc header contains useful context and ...">Arena</a> (managed in this process). Things are constructed (allocated) by this.</li>
<li>A <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#ad63c175a57f314c1ed3d4a78329030cd" title="The lend/borrow engine type which allows one to &quot;lend&quot; a T (obtained via Arena::construct&lt;T&gt;()) to th...">Shm_session</a> (not to be confused with ipc::Session and company). <code>Arena</code>-constructed objects are <em>lent</em> (<code><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a1346f63d338304a20bef43d3c93c7562" title="Adds an owner process to the owner set of the given Arena::construct()-ed handle; and returns an opaq...">lend_object()</a></code>) via this object. Opposing process's <code>Arena</code>-constructed objects are locally <em>borrowed</em> (<code><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a7880b205b076ddd46537826d3b2028e9" title="Completes the cross-process operation begun by oppsing Session_mv::lend_object() that returned serial...">borrow_object()</a></code>) via this object.</li>
<li>The <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session.html#a988281add5dc4a31202cfba47f458e5a" title="Short-hand for base class member alias Session_mv::Arena. Its doc header contains useful context and ...">Arena</a> must be registered with the <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#ad63c175a57f314c1ed3d4a78329030cd" title="The lend/borrow engine type which allows one to &quot;lend&quot; a T (obtained via Arena::construct&lt;T&gt;()) to th...">Shm_session</a> (<code>lend_arena()</code>) during setup.</li>
</ul>
<p >In some ways this is simpler than in SHM-classic, as in that one the arena is shared by the two processes, so one (we chose server) must create it and keep handle; while the other (client) must open it by a known name. In our case each side maintains its own arena, so the order does not matter per se. There is however one added complication:</p><ul>
<li>For the <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#ad63c175a57f314c1ed3d4a78329030cd" title="The lend/borrow engine type which allows one to &quot;lend&quot; a T (obtained via Arena::construct&lt;T&gt;()) to th...">Shm_session</a> to be created, on either side, it must be passed a pre-opened <code>struc::Channel</code> of a specific type which it shall use for internally-needed IPC. Specifically it just wants a <a class="el" href="classipc_1_1transport_1_1Socket__stream__channel__of__blobs.html" title="A Channel with a blobs pipe only (no handles pipe) that uses a Unix domain socket connection as the u...">transport::Socket_stream_channel_of_blobs</a> which internally consists of a pre-connected local stream socket (Unix domain socket). Much as with user-requested channels in vanilla sessions, we assign the session-server side the task of creating the socket-pair, sending one socket (<a class="el" href="namespaceipc_1_1transport.html#a7ee4551983d9df16ec16a3139bac50e8" title="Convenience alias for the commonly used type util::Native_handle.">transport::Native_handle</a>) to client, and expecting a quick ack message before proceeding to create <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#ad63c175a57f314c1ed3d4a78329030cd" title="The lend/borrow engine type which allows one to &quot;lend&quot; a T (obtained via Arena::construct&lt;T&gt;()) to th...">Shm_session</a>.</li>
<li>Accordingly the client side awaits the message (along session master channel) containing the socket, acks it, and creates the <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#ad63c175a57f314c1ed3d4a78329030cd" title="The lend/borrow engine type which allows one to &quot;lend&quot; a T (obtained via Arena::construct&lt;T&gt;()) to th...">Shm_session</a>.</li>
</ul>
<p >To summarize, then, this is the flow for <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Client__session__impl.html#abe4bd95f3ffe3db708b304397cffd8e0" title="See session::Client_session_impl counterpart.">Client_session_impl::async_connect()</a>.</p><ol type="1">
<li>Vanilla <a class="el" href="classipc_1_1session_1_1Client__session__impl.html#a56c0d2b0ff082d1f7b0738e2528b4a92" title="Core implementation of sync_connect().">session::Client_session_impl::async_connect()</a> gets it to PEER state. Cancel PEER state immediately in our substituted on-connect-done handler.</li>
<li>Await the <code>Native_handle</code> to arrive on the session master channel (which was just used for vanilla session opening procedure and is now not being used). Upon receipt send ack message and using the received handle:</li>
<li>Create <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#ad63c175a57f314c1ed3d4a78329030cd" title="The lend/borrow engine type which allows one to &quot;lend&quot; a T (obtained via Arena::construct&lt;T&gt;()) to th...">Shm_session</a> (<a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__impl.html#ab1a6a87ae71fc0b6b14a7af7aec4b2bc" title="See shm::arena_lend::jemalloc::Session_mv counterpart.">Client_session_impl::shm_session()</a> shall make it available).<ul>
<li><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__impl.html#a46155078d8764c71a8d75db64345074b" title="To be invoked at most once, synchronously sets up nearly-all aspects of this arena-lending-SHM-capabl...">Session_impl::init_shm()</a> does this.</li>
</ul>
</li>
<li>Create per-session arena (<a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__impl.html#a24a9e7098a5f58574e8ca88a035365a7" title="See shm::arena_lend::jemalloc::Session_mv counterpart.">Client_session_impl::session_shm()</a> shall make it available).<ul>
<li><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__impl.html#a46155078d8764c71a8d75db64345074b" title="To be invoked at most once, synchronously sets up nearly-all aspects of this arena-lending-SHM-capabl...">Session_impl::init_shm()</a> does this.</li>
</ul>
</li>
<li>Register the latter with the former.<ul>
<li><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__impl.html#a46155078d8764c71a8d75db64345074b" title="To be invoked at most once, synchronously sets up nearly-all aspects of this arena-lending-SHM-capabl...">Session_impl::init_shm()</a> does this.</li>
</ul>
</li>
<li>Re-enter PEER state; and invoke the true (user-supplied) on-connect-done handler.</li>
</ol>
<p >If the server had symmetrical needs only, it'd be easy to describe its algorithm &ndash; basically mirror the above. However it also has the per-app arena (<a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session.html#a20d4838f6ff705bd2ad33de066ae2d4d" title="Returns SHM Arena with per-app scope, meaning its pool shall be accessible potentially beyond the lif...">app_shm()</a>). It must be created, but only when an incoming session-open request is the first for its <a class="el" href="structipc_1_1session_1_1Client__app.html" title="An App that is used as a client in at least one client-server IPC split.">Client_app</a>. (This logic is above the layer of sessions and must reside in <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html" title="This is to vanilla Session_server what shm::arena_lend::jemalloc::Server_session is to vanilla Server...">Session_server</a>, not in <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session__impl.html" title="Core internally-used implementation of shm::arena_lend::jemalloc::Server_session: it is to the latter...">Server_session_impl</a>; but the two interact.) Later, regardless of whether it was just created, <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session.html#a20d4838f6ff705bd2ad33de066ae2d4d" title="Returns SHM Arena with per-app scope, meaning its pool shall be accessible potentially beyond the lif...">app_shm()</a> must be registered with the <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#ad63c175a57f314c1ed3d4a78329030cd" title="The lend/borrow engine type which allows one to &quot;lend&quot; a T (obtained via Arena::construct&lt;T&gt;()) to th...">Shm_session</a>, once that is created. Thus on the server side the <a class="el" href="classipc_1_1session_1_1Server__session__mv.html#a74d647e2f555465c28065dc11cd092cb" title="For use by internal user Session_server: called no more than once, ideally immediately following ctor...">async_accept_log_in()</a> steps are:</p><ol type="1">
<li>Vanilla <a class="el" href="classipc_1_1session_1_1Server__session__mv.html#a74d647e2f555465c28065dc11cd092cb" title="For use by internal user Session_server: called no more than once, ideally immediately following ctor...">async_accept_log_in()</a> gets it to almost-PEER state.<ol type="a">
<li>During the <a class="el" href="classipc_1_1session_1_1Session__server__impl.html" title="Internal class template comprising API/logic common to every Session_server variant,...">session::Session_server_impl</a> "per-Client_app setup" customization-point hook: <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html" title="This is to vanilla Session_server what shm::arena_lend::jemalloc::Server_session is to vanilla Server...">Session_server</a>: Create the per-app arena for that <a class="el" href="structipc_1_1session_1_1Client__app.html" title="An App that is used as a client in at least one client-server IPC split.">Client_app</a> and save it in its app-to-arena map, unless it is already there (then do nothing).</li>
<li>During the <a class="el" href="classipc_1_1session_1_1Server__session__impl.html" title="Internal, non-movable pImpl-lite implementation of Server_session_mv class template.">session::Server_session_impl</a> <code>pre_rsp_setup_func</code> hook that executes shortly after that: Cache the appropraite <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html#a8d11292ef977d04acb9260036100c605" title="Returns pointer to the per-app SHM-arena, whose lifetime extends until *this is destroyed; or null if...">Session_server::app_shm()</a> inside <code>*this</code> <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session__impl.html" title="Core internally-used implementation of shm::arena_lend::jemalloc::Server_session: it is to the latter...">Server_session_impl</a>, for quick subsequent access via <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session.html#a20d4838f6ff705bd2ad33de066ae2d4d" title="Returns SHM Arena with per-app scope, meaning its pool shall be accessible potentially beyond the lif...">Server_session::app_shm()</a>.</li>
</ol>
</li>
<li>Before invoking the user's on-accept-done handler &ndash; giving them their new <code><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session.html" title="Identical to session::Server_session in every way, except that it makes available two SHM arenas,...">Server_session</a></code> &ndash; perform the following <em>synchronous</em> steps:<ol type="a">
<li>Create the pre-connected native-handle pair (socket-pair).</li>
<li>Synchronously send it via session master channel (which was just used for vanilla session opening procedure and is now not being used) and get ack from client (see above).</li>
</ol>
</li>
<li>Create <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#ad63c175a57f314c1ed3d4a78329030cd" title="The lend/borrow engine type which allows one to &quot;lend&quot; a T (obtained via Arena::construct&lt;T&gt;()) to th...">Shm_session</a> (<a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__impl.html#ab1a6a87ae71fc0b6b14a7af7aec4b2bc" title="See shm::arena_lend::jemalloc::Session_mv counterpart.">Client_session_impl::shm_session()</a> shall make it available).<ul>
<li><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__impl.html#a46155078d8764c71a8d75db64345074b" title="To be invoked at most once, synchronously sets up nearly-all aspects of this arena-lending-SHM-capabl...">Session_impl::init_shm()</a> does this.</li>
</ul>
</li>
<li>Create per-session arena (<a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__impl.html#a24a9e7098a5f58574e8ca88a035365a7" title="See shm::arena_lend::jemalloc::Session_mv counterpart.">Client_session_impl::session_shm()</a> shall make it available).<ul>
<li><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__impl.html#a46155078d8764c71a8d75db64345074b" title="To be invoked at most once, synchronously sets up nearly-all aspects of this arena-lending-SHM-capabl...">Session_impl::init_shm()</a> does this.</li>
</ul>
</li>
<li>Register the latter with the former.<ul>
<li><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__impl.html#a46155078d8764c71a8d75db64345074b" title="To be invoked at most once, synchronously sets up nearly-all aspects of this arena-lending-SHM-capabl...">Session_impl::init_shm()</a> does this.</li>
</ul>
</li>
<li>Register <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session.html#a20d4838f6ff705bd2ad33de066ae2d4d" title="Returns SHM Arena with per-app scope, meaning its pool shall be accessible potentially beyond the lif...">app_shm()</a> (cached a few steps earlier) with the former (<a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#ad63c175a57f314c1ed3d4a78329030cd" title="The lend/borrow engine type which allows one to &quot;lend&quot; a T (obtained via Arena::construct&lt;T&gt;()) to th...">Shm_session</a>) also.<ul>
<li><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__impl.html#a46155078d8764c71a8d75db64345074b" title="To be invoked at most once, synchronously sets up nearly-all aspects of this arena-lending-SHM-capabl...">Session_impl::init_shm()</a> does this.</li>
</ul>
</li>
<li>Invoke the true (user-supplied) on-accept-done handler.</li>
</ol>
<p >The last and most boring piece of the puzzle are the pImpl-lite wrappers around the SHM-specific API that <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session.html" title="Identical to session::Server_session in every way, except that it makes available two SHM arenas,...">shm::arena_lend::jemalloc::Server_session</a> adds to super-class <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session__mv.html">Server_session_mv</a>: <code><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a361c867d10a255ff62cdb19b75fc0a18" title="Returns SHM Arena with per-session scope, meaning it shall be accessible only during the lifetime of ...">session_shm()</a></code> and so on. Because this API is (with the exception of <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session.html#a20d4838f6ff705bd2ad33de066ae2d4d" title="Returns SHM Arena with per-app scope, meaning its pool shall be accessible potentially beyond the lif...">app_shm()</a> (and buddies) being server-only) exactly identical for both <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session.html" title="Identical to session::Server_session in every way, except that it makes available two SHM arenas,...">shm::arena_lend::jemalloc::Server_session</a> and <a class="el" href="namespaceipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc.html#a837b4566cb2a734eb0ba58f285d084fe" title="This is to session::Client_session what shm::arena_lend::jemalloc::Server_session is to session::Serv...">shm::arena_lend::jemalloc::Client_session</a>, to avoid torturous copy/pasting these common wrappers are collected in <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html" title="Implements the SHM-related API common to shm::arena_lend::jemalloc::Server_session and shm::arena_len...">shm::arena_lend::jemalloc::Session_mv</a> which we sub-class. So the <code>public</code> API is distributed as follows from bottom to top:</p><ul>
<li><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session.html" title="Identical to session::Server_session in every way, except that it makes available two SHM arenas,...">shm::arena_lend::jemalloc::Server_session</a> =&gt; <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html" title="Implements the SHM-related API common to shm::arena_lend::jemalloc::Server_session and shm::arena_len...">shm::arena_lend::jemalloc::Session_mv</a> =&gt; <a class="el" href="classipc_1_1session_1_1Server__session__mv.html" title="Implements Session concept on the Server_app end: a Session that is emitted in almost-PEER state by l...">session::Server_session_mv</a> =&gt; <a class="el" href="classipc_1_1session_1_1Session__mv.html" title="Implements the Session concept when it is in PEER state.">session::Session_mv</a> =&gt; <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session__impl.html" title="Core internally-used implementation of shm::arena_lend::jemalloc::Server_session: it is to the latter...">shm::arena_lend::jemalloc::Server_session_impl</a></li>
<li><a class="el" href="namespaceipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc.html#a837b4566cb2a734eb0ba58f285d084fe" title="This is to session::Client_session what shm::arena_lend::jemalloc::Server_session is to session::Serv...">shm::arena_lend::jemalloc::Client_session</a> == <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html" title="Implements the SHM-related API common to shm::arena_lend::jemalloc::Server_session and shm::arena_len...">shm::arena_lend::jemalloc::Session_mv</a> =&gt; <a class="el" href="classipc_1_1session_1_1Client__session__mv.html" title="Implements Session concept on the Client_app end: a Session_mv that first achieves PEER state by conn...">session::Client_session_mv</a> =&gt; <a class="el" href="classipc_1_1session_1_1Session__mv.html" title="Implements the Session concept when it is in PEER state.">session::Session_mv</a> =&gt; <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Client__session__impl.html" title="Core internally-used implementation of shm::arena_lend::jemalloc::Client_session: it is to the latter...">shm::arena_lend::jemalloc::Client_session_impl</a><ul>
<li>The bottom two in this case are not even inherited but one aliases to the other. This is because there's nothing added API-wise on the client side. On the server side, as you see below, at least <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session.html#a20d4838f6ff705bd2ad33de066ae2d4d" title="Returns SHM Arena with per-app scope, meaning its pool shall be accessible potentially beyond the lif...">app_shm()</a> is necessary to add, so we can't alias and must sub-class.</li>
</ul>
</li>
</ul>
<p >You'll notice, like, <code><a class="el" href="classipc_1_1session_1_1Session__mv.html#af2c186e7b4be09bff30b42aa2482dd93" title="Short-hand for pImpl-lite impl type. This shall be the deepest impl sub-class desired.">Base::Base::Base::Impl</a></code> and <code><a class="el" href="classipc_1_1session_1_1Session__mv.html#af2c186e7b4be09bff30b42aa2482dd93" title="Short-hand for pImpl-lite impl type. This shall be the deepest impl sub-class desired.">Base::Base::Base::Impl()</a></code> in certain code below; that's navigating the above hierarchy.</p>
<dl class="tparams"><dt>Template Parameters</dt><dd>
  <table class="tparams">
    <tr><td class="paramname">S_MQ_TYPE_OR_NONE</td><td>Identical to <a class="el" href="namespaceipc_1_1session.html#ab01d5bce0ab2f3435ca9dd88d27609dc" title="A vanilla Server_session with no optional capabilities.">session::Server_session</a>. </td></tr>
    <tr><td class="paramname">S_TRANSMIT_NATIVE_HANDLES</td><td>Identical to <a class="el" href="namespaceipc_1_1session.html#ab01d5bce0ab2f3435ca9dd88d27609dc" title="A vanilla Server_session with no optional capabilities.">session::Server_session</a>. </td></tr>
    <tr><td class="paramname">Mdt_payload</td><td>Identical to <a class="el" href="namespaceipc_1_1session.html#ab01d5bce0ab2f3435ca9dd88d27609dc" title="A vanilla Server_session with no optional capabilities.">session::Server_session</a>. </td></tr>
  </table>
  </dd>
</dl>

<p class="definition">Definition at line <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2server__session_8hpp_source.html#l00226">226</a> of file <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2server__session_8hpp_source.html">server_session.hpp</a>.</p>
</div><h2 class="groupheader">Member Typedef Documentation</h2>
<a id="a988281add5dc4a31202cfba47f458e5a" name="a988281add5dc4a31202cfba47f458e5a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a988281add5dc4a31202cfba47f458e5a">&#9670;&nbsp;</a></span>Arena</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;session::schema::MqType S_MQ_TYPE_OR_NONE, bool S_TRANSMIT_NATIVE_HANDLES, typename Mdt_payload &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">using <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session.html">ipc::session::shm::arena_lend::jemalloc::Server_session</a>&lt; S_MQ_TYPE_OR_NONE, S_TRANSMIT_NATIVE_HANDLES, Mdt_payload &gt;::Arena =  typename <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#ae30ae4b65cd4178fa26eed660688829f">Base::Arena</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Short-hand for base class member alias <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#ae30ae4b65cd4178fa26eed660688829f" title="The arena object on which one may call construct&lt;T&gt;(ctor_args...), where ctor_args are arguments to t...">Session_mv::Arena</a>. Its doc header contains useful context and tips. </p>

<p class="definition">Definition at line <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2server__session_8hpp_source.html#l00239">239</a> of file <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2server__session_8hpp_source.html">server_session.hpp</a>.</p>

</div>
</div>
<a id="aee0d5c20c166905ba0d915e182cb7e13" name="aee0d5c20c166905ba0d915e182cb7e13"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aee0d5c20c166905ba0d915e182cb7e13">&#9670;&nbsp;</a></span>Base</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;session::schema::MqType S_MQ_TYPE_OR_NONE, bool S_TRANSMIT_NATIVE_HANDLES, typename Mdt_payload &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">using <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session.html">ipc::session::shm::arena_lend::jemalloc::Server_session</a>&lt; S_MQ_TYPE_OR_NONE, S_TRANSMIT_NATIVE_HANDLES, Mdt_payload &gt;::Base =  <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html">Session_mv</a> &lt;<a class="el" href="classipc_1_1session_1_1Server__session__mv.html">session::Server_session_mv</a> &lt;<a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session__impl.html">Server_session_impl</a>&lt;S_MQ_TYPE_OR_NONE, S_TRANSMIT_NATIVE_HANDLES, Mdt_payload&gt; &gt;&gt;</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Short-hand for our base class. To the user: note its <code>public</code> API is inherited. </p>

<p class="definition">Definition at line <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2server__session_8hpp_source.html#l00234">234</a> of file <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2server__session_8hpp_source.html">server_session.hpp</a>.</p>

</div>
</div>
<a id="a7de5ec3e9331c46664a493e060edb6f6" name="a7de5ec3e9331c46664a493e060edb6f6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7de5ec3e9331c46664a493e060edb6f6">&#9670;&nbsp;</a></span>Structured_msg_builder_config</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;session::schema::MqType S_MQ_TYPE_OR_NONE, bool S_TRANSMIT_NATIVE_HANDLES, typename Mdt_payload &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">using <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session.html">ipc::session::shm::arena_lend::jemalloc::Server_session</a>&lt; S_MQ_TYPE_OR_NONE, S_TRANSMIT_NATIVE_HANDLES, Mdt_payload &gt;::Structured_msg_builder_config =  typename <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#aaf1b1ad45b96d49c4c86e234a656f01b">Base::Structured_msg_builder_config</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Short-hand for base class member alias <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#aaf1b1ad45b96d49c4c86e234a656f01b" title="Implements Session API per contract.">Session_mv::Structured_msg_builder_config</a>. </p>

<p class="definition">Definition at line <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2server__session_8hpp_source.html#l00242">242</a> of file <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2server__session_8hpp_source.html">server_session.hpp</a>.</p>

</div>
</div>
<h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a3a407e1a87e5b384c3903ede62cca650" name="a3a407e1a87e5b384c3903ede62cca650"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3a407e1a87e5b384c3903ede62cca650">&#9670;&nbsp;</a></span>Server_session()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;session::schema::MqType S_MQ_TYPE_OR_NONE, bool S_TRANSMIT_NATIVE_HANDLES, typename Mdt_payload &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session.html">ipc::session::shm::arena_lend::jemalloc::Server_session</a>&lt; S_MQ_TYPE_OR_NONE, S_TRANSMIT_NATIVE_HANDLES, Mdt_payload &gt;::Server_session </td>
          <td>(</td>
          <td class="paramtype">flow::log::Logger *&#160;</td>
          <td class="paramname"><em>logger_ptr</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="structipc_1_1session_1_1Server__app.html">Server_app</a> &amp;&#160;</td>
          <td class="paramname"><em>srv_app_ref</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classipc_1_1transport_1_1Native__socket__stream.html">transport::Native_socket_stream</a> &amp;&amp;&#160;</td>
          <td class="paramname"><em>master_channel_sock_stm</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">explicit</span><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>For use by internal user <a class="el" href="classipc_1_1session_1_1Session__server__impl.html" title="Internal class template comprising API/logic common to every Session_server variant,...">Session_server_impl</a>: constructor. </p>
<p >Identical to <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session__mv.html">Server_session_mv</a> ctor.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">logger_ptr</td><td>See <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session__mv.html">Server_session_mv</a> ctor. </td></tr>
    <tr><td class="paramname">srv_app_ref</td><td>See <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session__mv.html">Server_session_mv</a> ctor. </td></tr>
    <tr><td class="paramname">master_channel_sock_stm</td><td>See <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session__mv.html">Server_session_mv</a> ctor. </td></tr>
  </table>
  </dd>
</dl>

<p class="definition">Definition at line <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2server__session_8hpp_source.html#l00323">323</a> of file <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2server__session_8hpp_source.html">server_session.hpp</a>.</p>

</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="a20d4838f6ff705bd2ad33de066ae2d4d" name="a20d4838f6ff705bd2ad33de066ae2d4d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a20d4838f6ff705bd2ad33de066ae2d4d">&#9670;&nbsp;</a></span>app_shm()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;session::schema::MqType S_MQ_TYPE_OR_NONE, bool S_TRANSMIT_NATIVE_HANDLES, typename Mdt_payload &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session.html">Server_session</a>&lt; S_MQ_TYPE_OR_NONE, S_TRANSMIT_NATIVE_HANDLES, Mdt_payload &gt;<a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session.html#a988281add5dc4a31202cfba47f458e5a">::Arena</a> * <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session.html">ipc::session::shm::arena_lend::jemalloc::Server_session</a>&lt; S_MQ_TYPE_OR_NONE, S_TRANSMIT_NATIVE_HANDLES, Mdt_payload &gt;::app_shm</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Returns SHM <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session.html#a988281add5dc4a31202cfba47f458e5a" title="Short-hand for base class member alias Session_mv::Arena. Its doc header contains useful context and ...">Arena</a> with per-app scope, meaning its pool shall be accessible potentially beyond the lifetime of this session but rather until the generating <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html" title="This is to vanilla Session_server what shm::arena_lend::jemalloc::Server_session is to vanilla Server...">Session_server</a> (i.e., server process) shuts down, by any <a class="el" href="classipc_1_1session_1_1Session.html" title="A documentation-only concept defining the local side of an IPC conversation (session) with another en...">Session</a> under that umbrella, now or in the future, as long as its <a class="el" href="structipc_1_1session_1_1Client__app.html" title="An App that is used as a client in at least one client-server IPC split.">Client_app</a> equals that of <code>*this</code> session. </p>
<dl class="section note"><dt>Note</dt><dd>A similar <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session.html#a988281add5dc4a31202cfba47f458e5a" title="Short-hand for base class member alias Session_mv::Arena. Its doc header contains useful context and ...">Arena</a> is <em>not</em> available in the opposing <a class="el" href="namespaceipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc.html#a837b4566cb2a734eb0ba58f285d084fe" title="This is to session::Client_session what shm::arena_lend::jemalloc::Server_session is to session::Serv...">Client_session</a>.</dd></dl>
<p>See <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session.html#a988281add5dc4a31202cfba47f458e5a" title="Short-hand for base class member alias Session_mv::Arena. Its doc header contains useful context and ...">Arena</a> doc header for useful instructions on working with <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session.html#a988281add5dc4a31202cfba47f458e5a" title="Short-hand for base class member alias Session_mv::Arena. Its doc header contains useful context and ...">Arena</a>, <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a1346f63d338304a20bef43d3c93c7562" title="Adds an owner process to the owner set of the given Arena::construct()-ed handle; and returns an opaq...">lend_object()</a>, and <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#a7880b205b076ddd46537826d3b2028e9" title="Completes the cross-process operation begun by oppsing Session_mv::lend_object() that returned serial...">borrow_object()</a>.</p>
<dl class="section return"><dt>Returns</dt><dd>See above. </dd></dl>

<p class="definition">Definition at line <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2server__session_8hpp_source.html#l00333">333</a> of file <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2server__session_8hpp_source.html">server_session.hpp</a>.</p>

</div>
</div>
<a id="a26c1d34c7be1002cc9fc8ae9eeae8164" name="a26c1d34c7be1002cc9fc8ae9eeae8164"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a26c1d34c7be1002cc9fc8ae9eeae8164">&#9670;&nbsp;</a></span>app_shm_builder_config()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;session::schema::MqType S_MQ_TYPE_OR_NONE, bool S_TRANSMIT_NATIVE_HANDLES, typename Mdt_payload &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session.html">Server_session</a>&lt; S_MQ_TYPE_OR_NONE, S_TRANSMIT_NATIVE_HANDLES, Mdt_payload &gt;<a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session.html#a7de5ec3e9331c46664a493e060edb6f6">::Structured_msg_builder_config</a> <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session.html">ipc::session::shm::arena_lend::jemalloc::Server_session</a>&lt; S_MQ_TYPE_OR_NONE, S_TRANSMIT_NATIVE_HANDLES, Mdt_payload &gt;::app_shm_builder_config</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Returns builder config suitable for capnp-serializing out-messages in SHM arena <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session.html#a20d4838f6ff705bd2ad33de066ae2d4d" title="Returns SHM Arena with per-app scope, meaning its pool shall be accessible potentially beyond the lif...">app_shm()</a>. </p>
<dl class="section return"><dt>Returns</dt><dd>See above. </dd></dl>

<p class="definition">Definition at line <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2server__session_8hpp_source.html#l00348">348</a> of file <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2server__session_8hpp_source.html">server_session.hpp</a>.</p>

</div>
</div>
<a id="af9ce191cc25d67c6c098ea56849ef2d5" name="af9ce191cc25d67c6c098ea56849ef2d5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af9ce191cc25d67c6c098ea56849ef2d5">&#9670;&nbsp;</a></span>app_shm_lender_session()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;session::schema::MqType S_MQ_TYPE_OR_NONE, bool S_TRANSMIT_NATIVE_HANDLES, typename Mdt_payload &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session.html">Server_session</a>&lt; S_MQ_TYPE_OR_NONE, S_TRANSMIT_NATIVE_HANDLES, Mdt_payload &gt;::Structured_msg_builder_config::Builder::Session <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session.html">ipc::session::shm::arena_lend::jemalloc::Server_session</a>&lt; S_MQ_TYPE_OR_NONE, S_TRANSMIT_NATIVE_HANDLES, Mdt_payload &gt;::app_shm_lender_session</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>When transmitting items originating in <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session.html#a988281add5dc4a31202cfba47f458e5a" title="Short-hand for base class member alias Session_mv::Arena. Its doc header contains useful context and ...">Arena</a> <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session.html#a20d4838f6ff705bd2ad33de066ae2d4d" title="Returns SHM Arena with per-app scope, meaning its pool shall be accessible potentially beyond the lif...">app_shm()</a> via <a class="el" href="classipc_1_1transport_1_1struc_1_1shm_1_1Builder.html#a7909a2d1e1d24037fb8af5338fffa783" title="Implements concept API.">transport::struc::shm::Builder::emit_serialization()</a> (and/or <a class="el" href="classipc_1_1transport_1_1struc_1_1Channel.html" title="Owning and wrapping a pre-connected transport::Channel peer (an endpoint of an established channel ov...">transport::struc::Channel</a> send facilities), returns additional-to-payload information necessary to target the opposing process properly. </p>
<p >Internally: Since <code>*this</code> type is based on arena-lending SHM-provider type, this is simply <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__mv.html#abde9667974bac936135e6a826e856f9a" title="Returns lend/borrow engine Shm_session for *this session.">shm_session()</a>. Generic code of yours should not need to rely on that impl detail, but we mention it for education/context.</p>
<dl class="section return"><dt>Returns</dt><dd>See above. </dd></dl>

<p class="definition">Definition at line <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2server__session_8hpp_source.html#l00356">356</a> of file <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2server__session_8hpp_source.html">server_session.hpp</a>.</p>

</div>
</div>
<a id="a841ce582dbb9084c7dc934f0d2fbb757" name="a841ce582dbb9084c7dc934f0d2fbb757"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a841ce582dbb9084c7dc934f0d2fbb757">&#9670;&nbsp;</a></span>app_shm_ptr()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;session::schema::MqType S_MQ_TYPE_OR_NONE, bool S_TRANSMIT_NATIVE_HANDLES, typename Mdt_payload &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">std::shared_ptr&lt; typename <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session.html">Server_session</a>&lt; S_MQ_TYPE_OR_NONE, S_TRANSMIT_NATIVE_HANDLES, Mdt_payload &gt;<a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session.html#a988281add5dc4a31202cfba47f458e5a">::Arena</a> &gt; <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session.html">ipc::session::shm::arena_lend::jemalloc::Server_session</a>&lt; S_MQ_TYPE_OR_NONE, S_TRANSMIT_NATIVE_HANDLES, Mdt_payload &gt;::app_shm_ptr</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Identical to <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session.html#a20d4838f6ff705bd2ad33de066ae2d4d" title="Returns SHM Arena with per-app scope, meaning its pool shall be accessible potentially beyond the lif...">app_shm()</a> but returns that via a <code>shared_ptr</code>-handle as required for work directly within ipc::shm::arena_lend::jemalloc APIs. </p>
<p >Note this is a quirk of that particular API and, in particular, has no equivalent in <a class="el" href="namespaceipc_1_1session_1_1shm_1_1classic.html" title="Support for SHM-backed ipc::session sessions and session-servers with the SHM-classic (ipc::shm::clas...">ipc::session::shm::classic</a> <code><a class="el" href="classipc_1_1session_1_1Session.html" title="A documentation-only concept defining the local side of an IPC conversation (session) with another en...">Session</a></code> and <code><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Session__server.html" title="This is to vanilla Session_server what shm::arena_lend::jemalloc::Server_session is to vanilla Server...">Session_server</a></code> counterparts. It should not be necessary to use except when going beyond <a class="el" href="namespaceipc_1_1session.html" title="Flow-IPC module providing the broad lifecycle and shared-resource organization – via the session conc...">ipc::session</a> for your SHM-arena needs.</p>
<dl class="section return"><dt>Returns</dt><dd>See above. </dd></dl>

<p class="definition">Definition at line <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2server__session_8hpp_source.html#l00340">340</a> of file <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2server__session_8hpp_source.html">server_session.hpp</a>.</p>

</div>
</div>
<h2 class="groupheader">Friends And Related Function Documentation</h2>
<a id="a8fc81db9a5adc7b6efc8529b5f1d98d2" name="a8fc81db9a5adc7b6efc8529b5f1d98d2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8fc81db9a5adc7b6efc8529b5f1d98d2">&#9670;&nbsp;</a></span>operator&lt;&lt;()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;session::schema::MqType S_MQ_TYPE_OR_NONE, bool S_TRANSMIT_NATIVE_HANDLES, typename Mdt_payload &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">std::ostream &amp; operator&lt;&lt; </td>
          <td>(</td>
          <td class="paramtype">std::ostream &amp;&#160;</td>
          <td class="paramname"><em>os</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session.html">Server_session</a>&lt; S_MQ_TYPE_OR_NONE, S_TRANSMIT_NATIVE_HANDLES, Mdt_payload &gt; &amp;&#160;</td>
          <td class="paramname"><em>val</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">related</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Prints string representation of the given <code><a class="el" href="classipc_1_1session_1_1shm_1_1arena__lend_1_1jemalloc_1_1Server__session.html" title="Identical to session::Server_session in every way, except that it makes available two SHM arenas,...">Server_session</a></code> to the given <code>ostream</code>. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">os</td><td>Stream to which to write. </td></tr>
    <tr><td class="paramname">val</td><td>Object to serialize. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><code>os</code>. </dd></dl>

<p class="definition">Definition at line <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2server__session_8hpp_source.html#l00363">363</a> of file <a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2server__session_8hpp_source.html">server_session.hpp</a>.</p>

</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li>session/shm/arena_lend/jemalloc/<a class="el" href="session_2shm_2arena__lend_2jemalloc_2jemalloc__fwd_8hpp_source.html">jemalloc_fwd.hpp</a></li>
<li>session/shm/arena_lend/jemalloc/<a class="el" href="ipc__shm__arena__lend_2src_2ipc_2session_2shm_2arena__lend_2jemalloc_2server__session_8hpp_source.html">server_session.hpp</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Fri Apr 11 2025 20:02:26 for Flow-IPC by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.4
</small></address>
</body>
</html>
